6

Silverlight で複数の非同期タスクを実行する必要があります。

サードパーティのパッケージのドキュメントには、使用できると記載されています

await Task.WhenAll()

残念ながらTask.WaitAll()、Silverlight しか持っておらず、待ちきれません。使用しようとするとデッドロックが発生します(すべてがフリーズするためだと思います)

非同期メソッドで使用する適切なパターンは何ですか?

4

2 に答える 2

1

あなたの質問を正しく理解すれば、TaskFactory.ContinueWhenAllを使用して同様の動作を試みることができると思います。

var task1 = Task.Factory.StartNew(() =>
{
    Thread.Sleep(1000);
    return "dummy value 1";
});

var task2 = Task.Factory.StartNew(() =>
{
    Thread.Sleep(2000);
    return "dummy value 2";
});

var task3 = Task.Factory.StartNew(() =>
{
    Thread.Sleep(3000);
    return "dummy value 3";
});

Task.Factory.ContinueWhenAll(new[] { task1, task2, task3 }, tasks =>
{
    foreach (Task<string> task in tasks)
    {
        Console.WriteLine(task.Result);
    }
});
于 2013-03-13T04:10:54.307 に答える