在C#4.0中,我们已经Task在System.Threading.Tasks命名空间.之间有什么真正的改变Thread和Task.我为了学习而做了一些示例程序(帮助从MSDN获取)
Parallel.Invoke
Parallel.For
Parallel.ForEach
Run Code Online (Sandbox Code Playgroud)
但有很多疑问,因为这个想法并不那么清楚.
我最初在Stackoverflow中搜索了类似类型的问题但可能是这个问题标题我无法得到相同的.如果有人知道之前发布的相同类型的问题,请提供链接的参考.
我是并行编程的新手..NET中有两个类:Task和Thread.
所以,问题是:这些课程有什么区别?何时更好地使用Thread何时Task?
我有一个Windows服务使用Thread和SemaphoreSlim每60秒执行一些"工作".
class Daemon
{
private SemaphoreSlim _semaphore;
private Thread _thread;
public void Stop()
{
_semaphore.Release();
_thread.Join();
}
public void Start()
{
_semaphore = new SemaphoreSlim(0);
_thread = new Thread(DoWork);
_thread.Start();
}
private void DoWork()
{
while (true)
{
// Do some work here
// Wait for 60 seconds, or exit if the Semaphore is released
if (_semaphore.Wait(60 * 1000))
{
return;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想从中调用异步方法DoWork.为了使用await我必须添加async到的关键字DoWork:
private async void DoWork()
Run Code Online (Sandbox Code Playgroud)