有没有人能给出一个示例或任何链接,描述如何生成线程,其中每个线程将在同时执行不同的工作。
假设我有job1和job2。 我想同时运行这两个任务。 我需要这些任务并行执行。 我该怎么做?
有没有人能给出一个示例或任何链接,描述如何生成线程,其中每个线程将在同时执行不同的工作。
假设我有job1和job2。 我想同时运行这两个任务。 我需要这些任务并行执行。 我该怎么做?
那么,基本上它很简单:
ThreadStart work = NameOfMethodToCall;
Thread thread = new Thread(work);
thread.Start();
...
private void NameOfMethodToCall()
{
// This will be executed on another thread
}
然而,还有其他选项,如线程池或(在.NET 4中)使用并行扩展。
我有一个关于线程的教程,它相当古老,还有一个Joe Alabahari的教程。
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创建强大的应用程序,使其具有响应性、并行性并满足用户期望。
ParameterizedThreadStart
或使用匿名函数来捕获参数。如果这不够详细,请提出一个单独的问题(在搜索答案之后 - 我怀疑这个问题以前已经被问过)。 - Jon SkeetThreadStart
或ParameterizedThreadStart
委托构造函数。在 C# 中,只需指定线程过程的名称即可。编译器会选择正确的委托构造函数。Thread thread = new Thread(NameOfMethodToCall);
同时确保您的方法是静态的:private static void NameOfMethodToCall() { //code };
- spencer741