2010-04-18 48 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来创建响应性,并行性和满足用户期望的健壮应用程序。