gpt4 book ai didi

具有无限循环的异步任务之间的 C# 同步?

转载 作者:太空狗 更新时间:2023-10-30 01:14:52 24 4
gpt4 key购买 nike

我有一个异步任务运行一个无限循环做一些实时处理:

private async void RealTimeProcessingAsync()
{
while (true)
{
//....
Tmstaus status = await ReadStatusAsync();
switch (status)
{
case Ack:
//...
break;
//...
}
//...
}
}

我还创建了另一个异步方法 SendWriteRqst,它将命令发布到 RealTimeProcessingAsync(),应该等待状态设置为定义的条件并返回。

public async Task<WriteState> SendWriteRqstAsync(TmCommand tmCmd)
{
//...
await SomeCondition()//based on status value
//...
return wrState;
}

如果 SomeCondition() 运行另一个 while 循环来轮询状态并在条件设置时返回 true,它将起作用,但我正在寻找更好的解决方案。

(抱歉英语不好)

最佳答案

It will works if SomeCondition() runs another while loop to polling status and return true if conditions set , but I'm looking for better solution.

您需要的是信号而不是轮询循环。如果只需要设置一次信号,可以使用TaskCompletionSource<T> .如果你想要一个可以设置和重置的信号(无需重建),那么你可以使用 AsyncManualResetEvent (还有 available from NuGet in my AsyncEx.Coordination library )。

关于具有无限循环的异步任务之间的 C# 同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41197635/

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