У меня есть функция под названием ChangeMap, которая запускает указатель и возвращает путь (если найден). Обычно я не использую его так много, но теперь мне нужно проверить множество путей, и когда я запустил все их, мое приложение замерзнет на мгновение.Обратный результат задачи
Требуется от 70 мс до 800 мс для 1 пути, и чтобы приложение не зависало, я хочу сделать часть следящего процесса в задаче и ждать возвращаемого пути.
Скажем, у меня есть этот
public Path GetPath(int from, int to)
{
// Pathfinder work
return new Path(thePath);
}
Я попытался это, но он не работает ..
private Path GetPath2(int from, int to)
{
return Task.Run(() =>
{
return GetPath(from, to);
}).Result;
}
И если я попробовать это, он дает мне ошибку Не могу дождаться Путь
Path tempPath = await GetPath2(0, 10);
Кто-нибудь знает, как правильно это сделать? Как подождать возвращаемое значение искателя, а затем продолжить, не замораживая все приложение. Зная, что у меня есть целая куча функций, так что я не могу поставить все вещи в новом потоке:/
'GetPath2' должен быть' private async Задача GetPath2'. Кроме того, существует соглашение для суффикса асинхронных методов с 'Async'. –
zerkms
Также стоит прочитать: https://blogs.msdn.microsoft.com/pfxteam/2012/03/24/should-i-expose-asynchronous-wrappers-for-synchronous-methods/ – zerkms
Приложение все еще замирает с этим:/ – Haytam