using System;

using System.Threading;

namespace ConsoleThread

{

class ThreadApp

{

static int interval;

static void DisplayNumbers()

{

// 获取当前运行线程的Thread对象实例

Thread thisThread = Thread.CurrentThread;

Console.WriteLine("线程: "+ thisThread.Name + " 已开始运行.");

// 循环计数直到结束,在指定的间隔输出当前计数值

for(int i = 1; i <= 8*interval; i++)

{

if(i%interval == 0)

{

Console.WriteLine(thisThread.Name + ": 当前计数为 " + i);

}

}

Console.WriteLine("线程 " + thisThread.Name + " 完成.");

}

static void Main(string[] args)

{

// 获取用户输入的数字

Console.Write("请输入一个数字:");

interval = int.Parse(Console.ReadLine());

// 定义当前主线程线程对象的名字

Thread thisThread = Thread.CurrentThread;

thisThread.Name = "Main Thread";

// 建立新线程对象

ThreadStart workerStart = new ThreadStart(DisplayNumbers);

Thread workerThread = new Thread(workerStart);

workerThread.Name = "Worker Thread";

workerThread.IsBackground = true;

// 启动新线程

workerThread.Start();

// 主线程同步进行计数

DisplayNumbers();

}

}

}

运行结果:

请输入一个数字:100

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 100

Main Thread: 当前计数为 200

Main Thread: 当前计数为 300

Main Thread: 当前计数为 400

Main Thread: 当前计数为 500

Main Thread: 当前计数为 600

Main Thread: 当前计数为 700

Main Thread: 当前计数为 800

线程 Main Thread 完成.

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 100

Worker Thread: 当前计数为 200

Worker Thread: 当前计数为 300

Worker Thread: 当前计数为 400

Worker Thread: 当前计数为 500

Worker Thread: 当前计数为 600

Worker Thread: 当前计数为 700

Worker Thread: 当前计数为 800

线程 Worker Thread 完成.

请输入一个数字:1000000

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 1000000

Main Thread: 当前计数为 2000000

Main Thread: 当前计数为 3000000

Main Thread: 当前计数为 4000000

Main Thread: 当前计数为 5000000

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 1000000

Worker Thread: 当前计数为 2000000

Worker Thread: 当前计数为 3000000

Main Thread: 当前计数为 6000000

Main Thread: 当前计数为 7000000

Worker Thread: 当前计数为 4000000

Worker Thread: 当前计数为 5000000

Main Thread: 当前计数为 8000000

线程 Main Thread 完成.

Worker Thread: 当前计数为 6000000

Worker Thread: 当前计数为 7000000

Worker Thread: 当前计数为 8000000

线程 Worker Thread 完成.

在【例】中,对Main()方法做如下修改,就可以看出修改线程的优先级的效果:

// 建立新线程对象

ThreadStart workerStart = new ThreadStart(DisplayNumbers);

Thread workerThread = new Thread(workerStart);

workerThread.Name = "Worker Thread";

workerThread.Priority = AboveNormal;

请输入一个数字:1000000

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 1000000

Main Thread: 当前计数为 2000000

Main Thread: 当前计数为 3000000

Main Thread: 当前计数为 4000000

Main Thread: 当前计数为 5000000

Main Thread: 当前计数为 6000000

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 1000000

Worker Thread: 当前计数为 2000000

Worker Thread: 当前计数为 3000000

Worker Thread: 当前计数为 4000000

Worker Thread: 当前计数为 5000000

Worker Thread: 当前计数为 6000000

Worker Thread: 当前计数为 7000000

Worker Thread: 当前计数为 8000000

线程 Worker Thread 完成.

Main Thread: 当前计数为 7000000

Main Thread: 当前计数为 8000000

线程 Main Thread 完成.

在DisplayNumbers()方法的循环体中加上一句代码,:

if(i%interval == 0)

{

Console.WriteLine(thisThread.Name + ": 当前计数为 " + i);

Thread.Sleep(10);             // 让当前工作线程暂停10毫秒

}

现在来看运行结果:

请输入一个数字:1000000

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 1000000

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 1000000

Main Thread: 当前计数为 2000000

Main Thread: 当前计数为 3000000

Worker Thread: 当前计数为 2000000

Main Thread: 当前计数为 4000000

Worker Thread: 当前计数为 3000000

Worker Thread: 当前计数为 4000000

Main Thread: 当前计数为 5000000

Worker Thread: 当前计数为 5000000

Worker Thread: 当前计数为 6000000

Main Thread: 当前计数为 6000000

Worker Thread: 当前计数为 7000000

Worker Thread: 当前计数为 8000000

线程 Worker Thread 完成.

Main Thread: 当前计数为 7000000

Main Thread: 当前计数为 8000000

线程 Main Thread 完成.

【转】C#多线程示例的更多相关文章

  1. android 多线程 示例

    public class MyRun implements Runnable { int count = 1000; @Override public void run() { while (true ...

  2. BMDThread控件动态创建多线程示例

    http://www.cnblogs.com/railgunman/archive/2010/12/08/1900688.html BMDThread控件是一套相当成熟的线程控件,使用它可以让你快速的 ...

  3. python 多线程示例

    原文链接:http://www.cnblogs.com/whatisfantasy/p/6440585.html 1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的 ...

  4. Java 多线程示例

    /** * 多线程案例 两种方式 模拟买票程序(不考虑线程安全问题) */ public class ThreadTest { public static void main(String[] arg ...

  5. linux多线程示例

    #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <pthread.h& ...

  6. c#(asp.net) 多线程示例,用于同时处理多个任务

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  7. C# 多线程示例

    static void Main(string[] args) { Thread t1 = new Thread(new ThreadStart(TestMethod)); Thread t2 = n ...

  8. python 多线程 示例

    import threading import Queue q = Queue.Queue() from test import * def worker1(x, y): #假设耗时 执行完毕 大于三 ...

  9. 单线程与多线程的简单示例(以Windows服务发短信为示例)

    单线程示例: public delegate void SM(); SM sm = new SM(() =>    {                    while (true)       ...

随机推荐

  1. JavaWeb 自定义404页面

    本来,Tomcat中自定义404页面不过是在web.xml文件中写4行代码的事情. 直接引用 Tomcat官方FAQ 怎样自定义404页面? 编辑web.xml <error-page> ...

  2. jQuery 绑定事件

    $('input').bind('click mouseover', fn); $('input').bind({ mouseover: fn(){}, mouseover:fn(){} }); 删除 ...

  3. SQL经典面试题及答案

    1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2 ...

  4. java IO之AutoCloseable,Closeable和Flushable接口

    有3个接口对于流类相当重要.其中两个接口是Closeable和Flushable,它们是在java.io包中定义的,并且是由JDK5添加的.第3个接口是AutoColseable,它是由JDK7添加的 ...

  5. 【软件工具】Driver Booster3永久激活法

    原作者網址:erik2041999 (YouTube) 1.安装Driver Booster3 (档案已附) 2.使用此启动码0187E-B9764-4D9FA-211B3断网启动 3.保持断网状态并 ...

  6. c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)

    1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...

  7. .NET程序的简单编译原理

    1.不管是什么程序,最终的执行官是CPU,而CPU只认识1和0的机器码. 2.我们现在写的一般是高级语言写的程序.CPU是不认识我们用高级语言写的源代码的,那应该怎么办才能让CPU执行我们写好的程序尼 ...

  8. Shell练习

    1   在终端下运行程序,首先清屏,然后提示:“Input a file or directory name, please!”.从键盘输入一个字符串(如:xxx),如果该字符串是目录,则显示:“xx ...

  9. gif显示

    public void gifplay(string path,ref Panel panel) { try{ Bitmap animatedGif = new Bitmap(path ); Grap ...

  10. 封装pyMysql

    #!/usr/bin/python import MySQLdb class SpiderPDO: def __init__(self): db_host = '127.0.0.1' db_user ...