无涯教程-C# - 线程示例

80 阅读1分钟

无涯教程可以在线程的执行上调用Static静态和非Static静态方法。要调用静态和非静态方法,需要在ThreadStart类的构造函数中传入方法名。对于Static静态方法,不需要创建类的实例。您可以通过类的名称来引用它。

using System;  
using System.Threading;  
public class MyThread  
{  
    public static void Thread1()  
    {  
        for (int i = 0; i < 10; i++)  
        {  
            Console.WriteLine(i);  
        }  
    }  
}  
public class ThreadExample  
{  
    public static void Main()  
    {  
        Thread t1 = new Thread(new ThreadStart(MyThread.Thread1));  
        Thread t2 = new Thread(new ThreadStart(MyThread.Thread1));  
        t1.Start();  
        t2.Start();  
    }  
}  

输出:

以上程序的输出可以是任何内容,因为线程之间存在上下文切换。

0
1
2
3
4
5
0
1
2
3
4
5
6
7
8
9
6
7
8
9

C#线程化示例:非Static静态方法

对于非Static静态方法,需要创建类的实例,以便在ThreadStart类的构造函数中引用。

using System;  
using System.Threading;  
public class MyThread  
{  
    public void Thread1()  
    {  
        for (int i = 0; i < 10; i++)  
        {  
            Console.WriteLine(i);  
        }  
    }  
}  
public class ThreadExample  
{  
    public static void Main()  
    {  
        MyThread mt = new MyThread();  
        Thread t1 = new Thread(new ThreadStart(mt.Thread1));  
        Thread t2 = new Thread(new ThreadStart(mt.Thread1));  
        t1.Start();  
        t2.Start();  
    }  
}  

输出:

与上面的程序输出一样,该程序的输出可以是任何内容,因为线程之间存在上下文切换。

0
1
2
3
4
5
0
1
2
3
4
5
6
7
8
9
6
7
8
9

C#线程化示例:在每个线程上执行不同的任务

让无涯教程看一个示例,其中在每个线程上执行不同的方法。

using System;
using System.Threading;

public class MyThread { public static void Thread1() { Console.WriteLine("task one"); } public static void Thread2() { Console.WriteLine("task two"); } } public class ThreadExample { public static void Main() { Thread t1 = new Thread(new ThreadStart(MyThread.Thread1)); Thread t2 = new Thread(new ThreadStart(MyThread.Thread2)); t1.Start(); t2.Start(); } }

输出:

task one
task two

参考链接

www.learnfk.com/csharp/c-sh…