【发布时间】:2023-03-06 02:10:01
【问题描述】:
谁能提供一个示例或任何链接来描述如何生成线程,每个线程将同时执行不同的工作。
假设我有 job1 和 job2。我想同时运行这两个作业。我需要这些工作并行执行。我该怎么做?
【问题讨论】:
标签: c# multithreading
谁能提供一个示例或任何链接来描述如何生成线程,每个线程将同时执行不同的工作。
假设我有 job1 和 job2。我想同时运行这两个作业。我需要这些工作并行执行。我该怎么做?
【问题讨论】:
标签: c# multithreading
嗯,基本上它很简单:
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。
【讨论】:
ParameterizedThreadStart,要么使用匿名函数来捕获参数。如果这还不够详细,请提出一个单独的问题(在搜索答案之后 - 我怀疑这个问题之前被问过)。
来自 MSDN 的线程教程!
http://msdn.microsoft.com/en-us/library/aa645740(VS.71).aspx
【讨论】:
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 提供的线程类和任务并行库来创建响应性、并行性和满足用户期望的健壮应用程序.
【讨论】: