У меня есть одна асинхронной задача выполняется бесконечный цикл делает некоторую обработку в реальном времени:C# синхронизация между задачами async с бесконечным циклом while?
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() запускает другое время цикл для опроса состояния и вернуться верно, если установить условие, но я ищу лучшее решение.
(простите за плохой английский)
Что такое 'SomeCondition()' делать, статус опроса откуда/что? –
На самом деле это задача, которая проверяет условия некоторых переменных из RealTimeProcessingAsync() как переменную состояния. – Amordad
Поэтому 'SomeCondition()' будет вызывать 'RealTimeProcessingAsync()', но будет возвращаться только в случае выполнения некоторых условий, которые зависят от изменений состояния, сделанных 'RealTimeProcessingAsync()'. Вот почему вы должны многократно вызывать 'RealTimeProcessingAsync()'. Это оно? –