gpt4 book ai didi

c# - 实现异步轮询方法的更好解决方案?

转载 作者:行者123 更新时间:2023-11-30 14:26:20 29 4
gpt4 key购买 nike

我已经阅读了 Stephen Toub's articleStephen Cleary's post ,但我仍然不清楚如何最好地实现轮询邮件服务器的异步方法。

据我从这些文章中了解到,我喜欢针对卸载(不阻塞 UI 线程)和可伸缩性(使用最少的资源)进行优化。现在我最终假设使用 Task.Delay 是最好的方法。但是,我不确定这一点。 TaskCompletionSource 结合计时器是更好的解决方案吗?还有其他解决方案吗?

这是我目前所拥有的:

    private async Task<int> WaitForMessages()
{
int messageCount = popClient.GetMessageCount();

while (messageCount == 0)
{
await Task.Delay(1000);
messageCount = popClient.GetMessageCount();
}

return messageCount;
}

PS:我知道,取消和超时仍然缺失。

最佳答案

Task.Delay 本身基本上是一个带有 TimerTaskCompletionSource。自己重新创建它没有意义。

使用 Task.Delay 非常适合异步等待轮询。

但是,另一方通知您 的异步 API 甚至更好,因为您不需要开始轮询。如果您可以控制 popClient,您可能需要考虑完全更改 API。

关于c# - 实现异步轮询方法的更好解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35664811/

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