📜  如何安排线程在C#中执行

📅  最后修改于: 2021-05-30 01:32:07             🧑  作者: Mango

Thread.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

开始(对象)

此方法告诉操作系统将当前实例的状态更改为“正在运行”。它传递一个包含数据的对象,该数据将由线程执行的方法使用。此参数是可选的。

句法:

public void Start (object parameter);

在这里, 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/zh-cn/dotnet/api/system.threading.thread.start?view=netframework-4.7.2