首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在异步方法.net 4.5中管理同步调用

在异步方法.net 4.5中管理同步调用
EN

Stack Overflow用户
提问于 2014-04-08 16:22:19
回答 1查看 273关注 0票数 2

关于异步方法中的同步调用,我有一个问题。

我在一个异步方法中有5个I/O调用。其中3个具有我可以使用的异步api,但其中2个是同步的(请求web服务而没有异步api)。我的问题是,在这种情况下,最佳做法是什么?

  1. 我可以将同步调用包装在Task.RunTask.Factory.StartNew中,并从池中获取线程,但是在您提到的视频中,它实际上可能会损害并发性。
  2. 我可以保留同步调用,但是TAP建议由TAP方法完成的同步工作应该尽可能少,并避免异步方法内的同步长时间运行操作。

我有点搞不懂这里该怎么走。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-08 17:18:31

您可以将StartNew与自定义SynchonizationContext一起使用,也可以将任务设置为LongRunning。LongRunning任务使用它们自己的线程。这会在某种程度上损害性能(在整个系统上运行的线程更多),但不会对运行在ThreadPool上的其他事情产生影响。

代码语言:javascript
运行
复制
Task.Factory.StartNew(() => DoThingy(), TaskCreationOptions.LongRunning)

你可以在这里看到关于TaskSchedulers,http://msdn.microsoft.com/en-us/library/dd997402.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22942785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档