【问题标题】:How to spawn thread in C#如何在 C# 中生成线程
【发布时间】:2023-03-06 02:10:01
【问题描述】:

谁能提供一个示例或任何链接来描述如何生成线程,每个线程将同时执行不同的工作。

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

【问题讨论】:

    标签: c# multithreading


    【解决方案1】:

    嗯,基本上它很简单:

    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

    【讨论】:

    • 假设我有 job1 和 job2。我想同时运行这两个作业。您的示例将按顺序执行。但我需要这些工作来并行执行。我该怎么做?
    • @deepak:不,它不会 - 你启动两个线程,它们将并行运行。这就是使用线程的全部意义所在。
    • @JonSkeet 如果我想将参数传递给我想调用的方法怎么办?
    • @AbijeetPatro:那么你要么使用ParameterizedThreadStart,要么使用匿名函数来捕获参数。如果这还不够详细,请提出一个单独的问题(在搜索答案之后 - 我怀疑这个问题之前被问过)。
    • @JonSkeet 是的,谢谢。要查看如何通过线程调用具有参数的方法,请查看此处 - stackoverflow.com/a/3360582/903324
    【解决方案2】:

    【讨论】:

    • 您的链接(现在)已损坏(下载已“停用”)但我找到了link
    【解决方案3】:

    C# 中的线程由线程类建模。当一个进程启动(你运行一个程序)时,你会得到一个线程(也称为主线程)来运行你的应用程序代码。要显式启动另一个线程(除了您的应用程序主线程),您必须创建一个线程类的实例并调用其 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!");
         }
      }
    

    您可以在本教程Multithreading in C# 中了解更多信息,在这里您将学习如何利用 C# 和 .NET Framework 提供的线程类和任务并行库来创建响应性、并行性和满足用户期望的健壮应用程序.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      相关资源
      最近更新 更多