У меня есть этот метод, который я хотел бы запустить асинхронно, чтобы я мог делать другие вещи во время его запуска. Он не полагается ни на какой другой метод Async (он не обращается к другому ресурсу, скачивает файл или что-то еще). Я хотел бы избежать использования new Task()
, Task.Factory.StartTask()
и Task.Run()
, если это возможно.Как асинхронно использовать этот длинный метод?
Возможно ли запустить этот метод асинхронно, с аккуратным, читаемым кодом и без использования задачи явно?
Если нет, то какой самый простой способ запускать метод асинхронно?
Примечание: Пожалуйста, не беспокойтесь о глупой логике в методе - я заварил ее, чтобы быть преднамеренно медленным, но не показывать мой фактический код.
public static void main(string[] args)
{
RunMySlowLogic();
}
private void RunMySlowLogic()
{
while (true)
for (int i=0; i<100000000;i++)
if (i == new Random().Next(999))
return true;
}
В настоящее время, я считаю, что мне нужно будет обернуть метод в лямбда или Задаче и пометить его как асинхронный. Куда будет ждать?
просмотреть этот http://stackoverflow.com/questions/32617702/how-to-async-this-long-running-method программы – Sievajet
Консоль может не 'await'. –
Если вы просто хотите запустить этот код в отдельном потоке, и ему не нужно ждать каких-либо других методов async, тогда вы можете просто выполнить 'Task.Factory.StartNew (RunMySlowLogic)'. Вы также можете добавить флаг LongRunning, если хотите. –