gpt4 book ai didi

c# - 在异步方法 .net 4.5 中管理同步调用

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:27 25 4
gpt4 key购买 nike

我对异步方法中的同步调用有疑问。

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

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

我有点困惑去这里的正确方法是什么。

最佳答案

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

Task.Factory.StartNew(() => DoThingy(), TaskCreationOptions.LongRunning)

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

关于c# - 在异步方法 .net 4.5 中管理同步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22942785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com