C#中如何安排线程执行(执行多线程?)

Thread.Start方法负责计划要执行的线程。可以通过向其传递不同的参数来重载该方法。

  • Start()
  • Start(对象)
Start() 此方法告诉操作系统将当前实例的状态更改为” 正在运行” 。换句话说, 由于该方法, 线程开始执行。
语法如下:
public void Start ();

例外情况:
  • ThreadStateException:如果线程已经启动。
  • OutOfMemoryException:如果没有足够的内存来启动线程。
例子:
//C# program to illustrate the //use of Start() method using System; using System.Threading; class GThread {//Non-static method public void Job() { for ( int X = 0; X < 4; X++) { Console.WriteLine(X); } } }//Driver Class public class GFG {//Main Method public static void Main() { //Creating object of GThread class GThread obj = new GThread(); //Creating and initializing a thread Thread thr = new Thread( new ThreadStart(obj.Job)); //Start the execution of Thread //Using Start() method thr.Start(); } }

输出如下:
0 1 2 3

Start(对象) 此方法告诉操作系统将当前实例的状态更改为” 正在运行” 。它传递一个对象, 该对象包含线程执行的方法要使用的数据。此参数是可选的。
语法如下:
public void Start (object parameter);

这里, 参数是一个对象, 其中包含线程执行的方法要使用的数据。
【C#中如何安排线程执行(执行多线程?)】例外情况:
  • ThreadStateException:如果线程已经启动。
  • OutOfMemoryException:如果没有足够的内存来启动线程。
  • InvalidOperationException:如果线程是使用ThreadStart委托而不是ParameterizedThreadStart委托创建的。
例子:
//C# program to illustrate the //use of Start(Object) method using System; using System.Threading; //Driver Class class GFG {//Main Method public static void Main() { //Creating object of GFG class GFG obj = new GFG(); //Creating and initializing threads Thread thr1 = new Thread(obj.Job1); Thread thr2 = new Thread(Job2); //Start the execution of Thread //Using Start(Object) method thr1.Start(01); thr2.Start( "Hello" ) }//Non-static method public void Job1( object value) { Console.WriteLine( "Data of Thread 1 is: {0}" , value); }//Static method public static void Job2( object value) { Console.WriteLine( "Data of Thread 2 is: {0}" , value); } }

输出如下:
Data of Thread 1 is: 1 Data of Thread 2 is: Hello

参考:
  • https://docs.microsoft.com/en-us/dotnet/api/system.threading.thread.start?view=netframework-4.7.2

    推荐阅读