У меня есть метод, который я хочу запустить асинхронно:
public async Task Send(MemoryMapModel memoryMap, SerialPort serialPort, ProgressBar progressBar, Settings settings)
{
SendFrames(memoryMap, serialPort, progressBar, _token.Token, settings);
}
И я использую его следующим образом: Task.Run ():
await Task.Run(async () => await _rtuLogic.Send(memoryMap, serialPort, pbProgressBar, settings).ConfigureAwait(false));
Метод " Send " генерирует исключения, которые я хочу перехватить, но для этого необходимо выполнить асинхронную задачу, но нет ожидаемых методов и VS хочет, чтобы я не использовал ключевое слово async .
Почему я не могу перехватить исключения из Task.Run(() => void)
, но это работает для Task.Run(async () => async Task)
, хотя нет подходящих методов?
РЕДАКТИРОВАТЬ: Кроме того, когда я пытался
Task.Factory.StartNew(() => { _rtuLogic.SendAsync(memoryMap, serialPort, pbProgressBar, settings); });
я не могу перехватить и обработать исключения.Если я не использую Task.Run (...) Send не работает асинхронно и останавливает графический интерфейс.