アプリケーションの単体テスト用に作成したc#クラスに問題があります。特に、問題はSystem.Threading.Tasks.Taskオブジェクトに関連しています。
そのようなオブジェクトのリストがあり、それらを同期的に実行したいと思います。
私は次のように呼びます:
myTask.RunSynchronously();
そのような場合、常に次のエラーが発生し、なぜそれを修正できるのかわかりません。
System.InvalidOperationException:RunSynchronouslyは、既に開始されているタスクでは呼び出されない可能性があります。
誰かアイデアはありますか?
問題は、あなたがstartedを呼び出すときのタスクであるTaskFactory.StartNew
-つまり、タスクを開始するのはメソッドの名前の中にさえあります。 StartNew
はタスクを作成し、代わりにStart
を呼び出します。 = D
必要に応じて、@ Peter Ritchieが言ったように、タスクでWait
を実行するか、次のようにタスクを手動で作成できます。
var task = new Task(() => { ... });
task.RunSynchronously();
既に開始されています。myTask.Wait()
を使用してください