并行执行任务 - Silverlight

Executing Tasks in Parallel - Silverlight

我想开始一堆任务并等待它们全部完成。

这个问题或多或少与这个问题相同:

但是,Silverlight 的答案不一样,因为没有与 Task.WhenAll() 等效的方法。

这应该可以,但我收到一个错误

Start may not be called on a promise-style task.

        foreach (var displayThumbnailTask in displayThumbnailTasks)
        {
            displayThumbnailTask.Start();
        }

        foreach (var task in displayThumbnailTasks)
        {
            await task;
        }

"Start may not be called on a promise-style task." 对于简单的事情来说是一个有点误导的消息:任务已经开始。

因此,您可以省略第一个循环。

Silverlight 没有 Task.WhenAll,但如果您使用 Microsoft.Bcl.Async,它包含相同的 TaskEx.WhenAll

await TaskEx.WhenAll(displayThumbnailTasks);

Execute parallel tasks with async/await