📅  最后修改于: 2020-10-31 14:10:52             🧑  作者: Mango
我们可以在线程执行时调用静态和非静态方法。要调用静态和非静态方法,您需要在ThreadStart类的构造函数中传递方法名称。对于静态方法,我们不需要创建类的实例。您可以通过类名来引用它。
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
对于非静态方法,您需要创建该类的实例,以便可以在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
让我们看一个示例,其中我们在每个线程上执行不同的方法。
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