我是并行编程的新手。.NET中有两个可用的类:Task和Thread。
Task
Thread
因此,我的问题是:
Thread是一个较低层的概念:如果您直接启动线程,则 知道 它将是一个单独的线程,而不是在线程池等上执行。
Task但是,它不仅仅是对“在哪里运行某些代码”的抽象-实际上,它只是“对未来结果的承诺”。因此,作为一些不同的示例:
Task.Delay
WebClient.DownloadStringTaskAsync
Task.Run()
请注意,Task<T>抽象对于C#5中的异步支持至关重要。
Task<T>
通常,我建议您尽可能使用更高级别的抽象:在现代C#代码中,您几乎不需要显式启动自己的线程。