我有一個下載網站的功能:F#異步和WPF進度
let downloadPage (address : string) =
async
{
// do some magic here
}
它的類型是「字符串 - >異步串」。
我想下載幾個頁面 - 讓「pagesToDownload」是一個包含所有這些頁面的seq。然後我可以這樣寫:
pagesToDownload
|> Seq.map downloadPage
|> Async.Parallel
|> Async.RunSynchronously
這很好,但它需要一些時間來完成。我打算在我的用戶界面中使用這個功能,所以很高興提供例如一個ProgressBar。
我發現在WPF使用進度一篇好文: http://elegantcode.com/2009/07/03/wpf-multithreading-using-the-backgroundworker-and-reporting-the-progress-to-the-ui/
,但我看不出這兩個想法結合起來。下載網站的模塊使用F#編寫,UI(ViewModel和View)使用C#編寫。
您可以接受['IProgress'](http://msdn.microsoft.com/en-us/library/hh138298%28v=vs.110%29.aspx)並使用默認['進度' ](http://msdn.microsoft.com/zh-cn/library/hh193692%28v=vs.110%29.aspx)實現作爲下載一堆頁面的方法中的參數。 –