【发布时间】:2020-04-23 16:04:31
【问题描述】:
我有一个方法,例如Task<string> GetContentAsync(string url),而我的控制台应用程序还没有准备好在内部利用 TPL,但也许以后会。
我怎样才能轻松地为此(或其他)方法编写同步包装器(不是替代实现)?
【问题讨论】:
-
@Servy 这与 UI 响应无关,因此不是该问题的重复。
-
@MichaelJ.Gray 确实,它不是 exact 重复项,但是该问题的答案回答了这个问题,这使得它适合使用 close 功能。
-
@Servy 考虑到您需要在该答案中实现一些消息泵送系统,这在控制台应用程序中基本上没有用处,我会说它不恰当地解决了过度设计的问题解决方案。通过访问
Task.Result,控制台应用程序中的继续死锁没有问题。 -
@MichaelJ.Gray 1) 这是一个非常有用的工具,即使在控制台应用程序中也是如此。事实上,如果您阅读了该帖子中链接的文章,那么创建它的全部原因 就是在控制台应用程序中创建同步上下文的一种方式。接下来,虽然默认情况下控制台应用程序没有同步上下文,因此不会死锁,但您可以在控制台应用程序中创建一个同步上下文,它可以制作 i> 这个代码死锁,所以控制台应用程序不能完全忽略这个问题。
-
@Servy 除了我设置上下文的部分,它仍然可以正常工作。
标签: c# .net task-parallel-library