簡體   English   中英

具有無限while循環的異步任務之間的C#同步?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM