[英]C# synchronization between async tasks with infinite while loop?
我有一個異步任務運行無限循環做一些實時處理:
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,它將起作用,但我正在尋找更好的解決方案。
(抱歉英文不好)
如果SomeCondition()運行另一個while循環到輪詢狀態並且如果條件設置則返回true,它將起作用,但我正在尋找更好的解決方案。
你想要的是一個信號而不是一個輪詢循環。 如果您只需要設置一次信號,則可以使用TaskCompletionSource<T>
。 如果您想要一個可以設置和重置的信號(無需重建),那么您可以使用AsyncManualResetEvent
(也可以從我的AsyncEx.Coordination庫中的NuGet獲得 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.