如何在C#中创建线程

11

有没有人能给出一个示例或任何链接,描述如何生成线程,其中每个线程将在同时执行不同的工作。

假设我有job1和job2。 我想同时运行这两个任务。 我需要这些任务并行执行。 我该怎么做?

3个回答

22

那么,基本上它很简单:

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

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

然而,还有其他选项,如线程池或(在.NET 4中)使用并行扩展。

我有一个关于线程的教程,它相当古老,还有一个Joe Alabahari的教程


@JonSkeet 如果我想要传递参数给我想要调用的方法,该怎么办? - Abijeet Patro
1
@AbijeetPatro:然后你可以使用ParameterizedThreadStart或使用匿名函数来捕获参数。如果这不够详细,请提出一个单独的问题(在搜索答案之后 - 我怀疑这个问题以前已经被问过)。 - Jon Skeet
@JonSkeet 是的,已经解决了,谢谢。要查看如何通过线程调用具有参数的方法,请在此处查看 - https://dev59.com/gnA75IYBdhLWcg3wUHSQ#3360582 - Abijeet Patro
Visual Basic 和 C# 用户在创建线程时可以省略 ThreadStartParameterizedThreadStart 委托构造函数。在 C# 中,只需指定线程过程的名称即可。编译器会选择正确的委托构造函数。Thread thread = new Thread(NameOfMethodToCall); 同时确保您的方法是静态的: private static void NameOfMethodToCall() { //code }; - spencer741
@spencer741:它不必是静态的 - 只要转换的上下文也是实例方法,方法组转换将适用于实例方法。 - Jon Skeet
显示剩余4条评论

1

你的链接已经失效(下载已被“下架”),但我找到了链接 - Chad

0

C#中的线程是由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!");
     }
  }

您可以在这个教程C#中的多线程编程中了解更多。在这里,您将学习如何利用C#和.NET Framework提供的Thread类和Task Parallel Library创建强大的应用程序,使其具有响应性、并行性并满足用户期望。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接