Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中生成线程#_C#_Multithreading - Fatal编程技术网

C# 如何在C中生成线程#

C# 如何在C中生成线程#,c#,multithreading,C#,Multithreading,任何人都可以提供一个样本或任何链接,描述如何产生线程,其中每个线程将在同一时间做不同的工作 假设我有作业1和作业2。我想同时运行这两个作业。我需要这些工作并行执行。我该怎么做呢?MSDN的线程教程 基本上,它很简单: ThreadStart work = NameOfMethodToCall; Thread thread = new Thread(work); thread.Start(); ... private void NameOfMethodToCall() { // This

任何人都可以提供一个样本或任何链接,描述如何产生线程,其中每个线程将在同一时间做不同的工作


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

MSDN的线程教程


基本上,它很简单:

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

private void NameOfMethodToCall()
{
    // This will be executed on another thread
}
但是,还有其他选项,例如线程池或(在.NET4中)使用并行扩展

我有一个很老的线程,C#中的线程是由Thread类建模的。当一个进程启动时(你运行一个程序),你会得到一个线程(也称为主线程)来运行你的应用程序代码。要显式启动另一个线程(应用程序主线程除外),必须创建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#和.NET Framework提供的线程类和任务并行库来创建响应迅速、并行且满足用户期望的健壮应用程序。

假设我有job1和job2。我想同时运行这两个作业。您的示例将按顺序执行。但我需要这些工作同时执行。我该怎么做?@deepak:不会的-你启动两个线程,它们将并行运行。这就是使用线程的全部意义。@JonSkeet如果我希望将参数传递给我要调用的方法,该怎么办?@AbijeetPatro:那么您可以使用
parameteredThreadStart
或使用匿名函数来捕获参数。如果这还不够详细,请问一个单独的问题(在搜索答案之后-我怀疑这个问题以前被问过)。@JonSkeet是的,已经问过了,谢谢。要了解如何通过线程调用具有参数的方法,请检查此处-您的链接(现在)已断开(下载已“失效”),但我能够找到