gpt4 book ai didi

c# - 同步使用 nice .net 4.5 HttpClient 的最佳方式

转载 作者:IT王子 更新时间:2023-10-29 04:44:09 26 4
gpt4 key购买 nike

我喜欢新的 System.Net.Http.HttpClient 类。它有一个非常简单的 API,不会抛出正常错误。但它只是异步的。

我需要运行的代码(深入服务器内部)

foo();
bar();
// compute stuff
var x = GetThingFromOtherServerViaHttp();
// compute more stuff
wiz(x);

经典的顺序同步代码。我看到了几个类似的 SO 问题,但实际上并没有最终说“这样做”。我看着

client.PostAsync.Wait()

全世界都在尖叫“不要这样做”。怎么样:

client.PostAsync.Result()

这不就是变相的等待吗?

最后,我最终传递了一个处理结果的 lambda 回调,然后唤醒显式等待 EventWaitHandle 的调用线程。很多管道。有没有更简单的东西,或者我应该回到使用旧的 http 客户端

编辑:进一步阅读后,我怀疑这段代码与 Wait 和 Result 有相同的问题,它只是一个更冗长的死锁

编辑:我最近让 MS PM 向我确认有一项规定“任何可能需要 > X ms(我忘记了 X)的 API 必须是异步的”,许多 PM 将其解释为“仅异步”(不清楚是否这就是预期的)。因此 Document DB api 只是异步的。

最佳答案

来自 http://blogs.msdn.com/b/pfxteam/archive/2012/04/13/10293638.aspx :

return Task.Run(() => Client.PostAsync()).Result;

关于c# - 同步使用 nice .net 4.5 HttpClient 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31954224/

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