2010-04-18 55 views
7

任何人都可以給一個示例或描述如何產生線程的任何鏈接,其中每個線程將同時執行不同的工作。如何在C#中產生線程

假設我有job1和job2。我想同時運行這兩項工作。我需要這些工作並行執行。我怎樣才能做到這一點?

回答

14

好,從根本上是簡單的:

ThreadStart work = NameOfMethodToCall; 
Thread thread = new Thread(work); 
thread.Start(); 
... 

private void NameOfMethodToCall() 
{ 
    // This will be executed on another thread 
} 

然而,還有其他選項,如線程池或使用並行擴展(在.NET 4)。

我有一個threading tutorial這是比較舊的和Joe Alabahari has one too

+0

假設我有job1和job2。我想同時運行這兩項工作。你的例子將按順序執行。但我需要這些工作並行執行。我怎樣才能做到這一點 ? – deepak 2010-04-18 06:50:20

+0

@deepak:不,它不會 - 你啓動兩個線程,它們將並行運行。這就是使用線程的關鍵。 – 2010-04-18 06:53:31

+0

@JonSkeet如果我想將參數傳遞給我想要調用的方法,該怎麼辦? – 2013-08-01 05:23:04

0

C#中的線程由Thread Class建模。當一個進程開始時(你運行一個程序),你得到一個單線程(也稱爲主線程)來運行你的應用程序代碼。要明確啓動另一個線程(不是你的應用程序主線程等),你必須創建Thread類的實例,並調用它的start方法使用C#來運行的線程,讓我們看一個例子

using System; 
    using System.Diagnostics; 
    using System.Threading; 

    public class Example 
    { 
    public static void Main() 
    { 
      //initialize a thread class object 
      //And pass your custom method name to the constructor parameter 

      Thread thread = new Thread(SomeMethod); 

      //start running your thread 

      thread.Start(); 

      Console.WriteLine("Press Enter to terminate!"); 
      Console.ReadLine(); 
    } 

    private static void SomeMethod() 
    { 
      //your code here that you want to run parallel 
      //most of the cases it will be a CPU bound operation 

      Console.WriteLine("Hello World!"); 
    } 
    } 

您可以瞭解更多這tutorial Multithreading in C#,在這裏,您將學習如何利用C#和.NET Framework提供的Thread類和Task Parallel Library來創建響應性,並行性和滿足用戶期望的健壯應用程序。