...Async
と returnで終わるメソッドを提供するライブラリを使用していますTask
。これらをコマンド ライン アプリケーションで使用します。だから私はそれらを同期的にたくさん呼び出す必要があります。
C# ではもちろん、メソッドで修飾子をMain
使用できないため、これらのメソッドをメソッドで呼び出すことはできません。これがタスクであると仮定します:async
Main
var task = datastore.Save(data);
次のようないくつかの解決策が見つかりました。
Tasks.WaitAll(task);
task.Wait();
ただし、これらすべてのラップで例外がスローされますがAggregateException
、それは望ましくありません。私は言いたいだけでtask.Result
、元の例外がスローされることを期待しています。
を返すメソッドを使用すると、継続タスクが設定されていないにもかかわらずTask<TResult>
、task.Result
スローされます。AggregateException
なぜこれが起こっているのですか?
私も試しましたが、
task.RunSynchronously();
エラーが発生します:
RunSynchronously は、非同期メソッドから返されたタスクなど、デリゲートにバインドされていないタスクでは呼び出すことができません。
とマークされたメソッドではないと思いasync
ます。
非同期コンテキストがないコンソール アプリで非同期アプリ用に設計されたライブラリを使用するパターンに関するアイデアはありますか?