Jon*_*Jon 99 .net c# multithreading .net-4.0
我刚学习.Net 4中新的线程和并行库
在过去,我会像这样创建一个新线程(作为示例):
DataInThread = new Thread(new ThreadStart(ThreadProcedure));
DataInThread.IsBackground = true;
DataInThread.Start();
Run Code Online (Sandbox Code Playgroud)
现在我能做到:
Task t = Task.Factory.StartNew(() =>
{
ThreadProcedure();
});
Run Code Online (Sandbox Code Playgroud)
有什么区别?
谢谢
san*_*ole 78
有一个很大的不同.任务在ThreadPool上安排,如果合适,甚至可以执行同步.
如果您有长时间运行的后台工作,则应使用正确的任务选项指定此项.
您应该更喜欢任务并行库而不是显式线程处理,因为它更加优化.此外,您还有更多功能,如Continuation.
Jon*_*eet 73
该任务为您提供了任务API的所有优点:
Task.ContinueWith)请注意,在这两种情况下,您都可以使用方法组转换使代码更简单:
DataInThread = new Thread(ThreadProcedure);
// Or...
Task t = Task.Factory.StartNew(ThreadProcedure);
Run Code Online (Sandbox Code Playgroud)
ale*_*kow 12
在第一种情况下,您只是启动一个新线程,而在第二种情况下,您正在进入线程池.
该线程池的工作是共享和回收线程.它允许每次我们需要创建一个新线程时避免丢失几毫秒.
有几种方法可以进入线程池:
| 归档时间: |
|
| 查看次数: |
96674 次 |
| 最近记录: |