36

アプリケーションの単体テスト用に作成した ac# クラスに問題があります。特に、問題は System.Threading.Tasks.Task オブジェクトに関するものです。

そのようなオブジェクトのリストがあり、それぞれを同期的に実行したいと考えています。

私は次のように呼びます:

myTask.RunSynchronously();

そのようなことをすると、常に次のエラーが発生し、なぜそれを修正できるのかわかりません。

System.InvalidOperationException: 既に開始されているタスクで RunSynchronously を呼び出すことはできません。

誰でもアイデアはありますか?

4

3 に答える 3

46

問題は、呼び出し時にタスクを開始TaskFactory.StartNewしたことです。つまり、タスクを開始しているメソッドの名前でもあります。タスクを作成し、あなたに代わってStartNew呼び出します。Start=D

必要に応じて、 Wait@Peter Ritchie が言ったようにタスクを実行するか、次のようにタスクを手動で作成できます。

var task = new Task(() => { ... });
task.RunSynchronously();
于 2012-05-11T17:12:38.850 に答える
39

それはすでに始まっています、ただ使ってくださいmyTask.Wait()

于 2012-05-11T17:04:19.960 に答える