我想使用任務並行庫(SL5具有任務工廠,但沒有Parallel.For)在Silverlight 5.0應用程序中實現以下內容。我有足夠的線程知識,但沒有對TPL所以這似乎是一個很好的任務中獲得一些:)多個操作的並行化和結果的並置
目前,我有一些代碼,它執行同步如下:
public interface IProcessor
{
IEnumerable<Bar> Provide(Foo param)
}
private IEnumerable<IProcessor> processors;
public void DoMultiOperations(Foo param, Action<IEnumerable<Bar>> callback)
{
List<Bar> allResults = new List<Bar>();
foreach(var processor in this.processors)
{
allResults.AddRange(processor.Provide(param));
}
callback(allResults);
}
考慮每個IProcessor
接受Foo
參數Provide
返回IEnumerable<Bar>
。所有結果的聚合都通過回調發回給調用者。
現在一些IP處理器立即執行。有些人打電話給服務器,可能需要幾秒鐘的時間。我想爲N IProcessor
個實例安排N個任務,並在所有完成(或超時)時連接IEnumerable<Bar>
結果。
如果可能我想增加一個超時到整體操作,所以如果在15秒內沒有完成,拋出。
你的幫助非常感謝:)
當'IProcessor'顯然是一個同步接口時它們怎麼會是異步的? – svick 2012-07-11 11:58:31
對不起,只是重構了與IProcessor的接口同步(阻塞)。我將重新提出這個問題 – 2012-07-11 12:49:51