2011-12-23 11 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

これは電話機で行う必要がありますか? –

答えて

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

関連する問題