вы можете использовать этот подход в родительской функции для неблокирования вашего пользовательского интерфейса
await Task.Run(() => {
// Do lot of work here
});
в вашем случае
await Task.Run(() => action());
, если ваш метод действия асинхронный
async Task action(){}
затем
await Task.Run(async () => await action());
вы можете просто преобразовать свой метод действия в асинхронный, добавив ключевое слово await в каждую задачу.Поскольку ключевое слово await может использоваться только с асинхронным методом, необходимо преобразовать свой метод в асинхронный.
async Task action()
{
dovoid1();
await Task.Delay(1000);
dovoid2();
await Task.Delay(1000);
dovoid3();
await Task.Delay(1000);
action();
}
Пожалуйста, имейте в виду, что если ваш dovoid1, dovoid2, dovoid3 включает в себя задачу, то их также необходимо преобразовать в асинхронный метод, и их следует ожидать.