关于异步方法中的同步调用,我有一个问题。
我在一个异步方法中有5个I/O调用。其中3个具有我可以使用的异步api,但其中2个是同步的(请求web服务而没有异步api)。我的问题是,在这种情况下,最佳做法是什么?
Task.Run或Task.Factory.StartNew中,并从池中获取线程,但是在您提到的视频中,它实际上可能会损害并发性。我有点搞不懂这里该怎么走。
发布于 2014-04-08 17:18:31
您可以将StartNew与自定义SynchonizationContext一起使用,也可以将任务设置为LongRunning。LongRunning任务使用它们自己的线程。这会在某种程度上损害性能(在整个系统上运行的线程更多),但不会对运行在ThreadPool上的其他事情产生影响。
Task.Factory.StartNew(() => DoThingy(), TaskCreationOptions.LongRunning)你可以在这里看到关于TaskSchedulers,http://msdn.microsoft.com/en-us/library/dd997402.aspx。
https://stackoverflow.com/questions/22942785
复制相似问题