私はという名前のファンクションを持っています。パスマップを実行し、見つかった場合はパスを返すChangeMapです。 私はそれをあまり使用しませんが、今は多くのパスをチェックする必要があります。すべてを実行すると、しばらくアプリケーションがフリーズします。タスクの結果を返します
1つのパスで70msから800msの時間がかかり、アプリケーションがフリーズしないように、タスクでパスファインダーの部分を行い、返されたパスを待っています。
は、私がこれを試みたが、それは動作しません。..
private Path GetPath2(int from, int to)
{
return Task.Run(() =>
{
return GetPath(from, to);
}).Result;
}
そして、私はこれをしようとした場合、それは私にがパスを待つことができないエラーを与えるのは、私はこの
public Path GetPath(int from, int to)
{
// Pathfinder work
return new Path(thePath);
}
を持っているとしましょう
Path tempPath = await GetPath2(0, 10);
誰でもこれを正しく行う方法を知っていますか? パスファインダーの戻り値を待ってから、アプリケーション全体をフリーズせずに続行する方法。私は新しいスレッド内のすべてのものを置くことができないので、私は機能の全体の束を持っていることを知っ:/
'GetPath2'は' private非同期タスク GetPath2'でなければなりません。また、非同期メソッドの後に 'Async'をつけることもできます。 –
zerkms
また、読む価値があります:https://blogs.msdn.microsoft.com/pfxteam/2012/03/24/should-i-expose-asynchronous-wrappers-for-synchronous-methods/ – zerkms
アプリケーションはそれでもフリーズします。 – Haytam