3

此页面http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx在线程部分中表示异步方法不在其他线程中运行,如果我想使用其他线程,我会使用Task.Run。

所以我知道异步和线程是两个不同的东西,每个选项在某些情况下都有好处。我想知道什么时候使用异步更好,什么时候使用线程更好。

谢谢。

4

1 回答 1

3

当你有持续的工作要做时,你会使用线程。直接使用自定义写入池。即使这样,您也可以将其隐藏在自定义任务计划程序后面(使用他自己的线程池)。

当您不需要控制低级线程参数时,线程具有一些优势 - 这是非常罕见的。诸如设置优先级之类的琐事您也可以在异步中执行(记住要回退),但有时您需要为互操作设置很多东西。

尽管如此,这些天线程是一个非常低级的 API - 由于任务与自定义调度程序一起使用,因此您确实很少使用自定义任务调度程序之外的线程(它可能在内部使用自定义线程的线程池作为低级 API) .

当您为 LONG TERM 分配线程时,线程也很方便。长期不一定是“计算密集型”。我在这里有一个在自定义线程上以 24 小时循环运行的 API - 我启动一个线程,调用一个“处理数据”方法,该方法会回调给我。该方法在问题/错误时返回,或每天一次(为下一个实时数据块立即重新启动)。显然,忙个不停,这对于线程来说是一个很好的例子,而不是一个任务,因为一个任务的所有高级特性都是无用的。

对于几乎所有其他事情这些天我使用任务/异步。

于 2012-12-09T19:21:54.353 回答