2011-12-23 71 views
2

我現在有一個循環是這樣的:WriteableBitmap的在後臺工作

foreach(var item in theList) 
{ 
//create writeablebitmap from item.GetPicture() which returns a stream. 
//do stuff with it 
//save it to isolated storage 
} 

這是一個非常長期運行的進程,因爲有噸圖像。我試圖把它放在後臺工作,但你不能在那裏創建WriteableBitmaps(他們必須在UI線程上)。問題在於界面完全沒有反應。

我該如何讓它在每個循環中處理一次按鍵/ UI,以確保它能夠響應用戶的操作?

+0

這是你需要在手機上做的事嗎? – 2011-12-23 09:08:52

回答

2
BackgroundWorker backgroundWorker = new BackgroundWorker(); 
backgroundWorker.DoWork += (s, e) => 
{ 
    foreach(var item in theList) 
    { 
     var item _ = item; 
     Deployment.Dispatcher.BeginInvoke(() => 
     { 
      // do your stuff on UI thread with item_ 
     }); 
     Thread.Sleep(milliseconds); //experiment with delay to find balance between UI responsiveness and performance 
    } 
}; 
backgroundWorker.RunWorkAsync(); 
+1

完美,謝謝! – Matt 2011-12-23 17:11:17