Мне нужно создать библиотеку, которая связывается с устройством через COM-порт.
В одной из функций мне нужно выполнить команду, затем подождать несколько секунд, пока она выполняет тест (варьируется от 10 до 1000 секунд), и вернуть результат теста:
Один из подходов - использовать шаблон async-await:
public async Task<decimal> TaskMeasurementAsync(CancellationToken ctx = default)
{
PerformTheTest();
// Wait till the test is finished
await Task.Delay(_duration, ctx);
return ReadTheResult();
}
Другое, что приходит на ум, это просто запустить событие по завершении.
Устройство выполняет тестирование, и продолжительность указывается перед его выполнением. Так что в любом случае мне пришлось бы использовать Task.Delay()
или Thread.Sleep()
, чтобы дождаться завершения задачи на устройстве.
Я склоняюсь к async-await
, так как его легко встроить в отмену и из-за отсутствия лучшего термина, он самодостаточен, т.е. мне не нужно объявлять событие, создавать класс EventArgs
и т. Д.
Буду признателен за любые отзывы о том, какой подход лучше, если кто-то сталкивался с подобной дилеммой.
Спасибо.