个性化阅读
专注于IT技术分析

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);

这里, 参数是一个对象, 其中包含线程执行的方法要使用的数据。

例外情况:

  • 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

赞(0)
未经允许不得转载:srcmini » C#中如何安排线程执行?执行多线程?

评论 抢沙发

评论前必须登录!