我有UI WPF應用程序。BackgroundWorker問題
可能被一些人不得不爲什麼這個代碼不工作的任何想法?
案例1:
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += delegate
{
//some logic
};
worker.RunWorkerAsync();
在這種情況下,我得到異常 調用線程,因爲不同的線程擁有它不能訪問該對象。 於是我改成了這樣:
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += delegate
{
this.Dispatcher.BeginInvoke(
new Action(() => { //my code here }), null);
};
這段代碼執行過程中UI漸凍後。就像是在同一個線程
案例2執行:
BackgroundWorker worker = new BackgroundWorker();
worker.RunWorkerAsync(new Action(() =>
{
//some code here
}));
在這種情況下,代碼中的行動不執行。
// ----------------------------------修訂--------- ----------------------------- //
謝謝傢伙是幫忙 爲什麼我的代碼不正確的是工作的原因如以下所說的。我確實在後臺線程中訪問了一些UI元素。現在我正在調用BackgroundWorker之前從UI元素中獲取所有值。我現在聲明新變量,爲它們分配來自所需UI元素的所有值,然後將這些變量傳遞給BackgroundWorker而不是UI元素(這是它最初的作用)。
定義「不工作」。你在期待什麼?什麼沒有發生?任何錯誤?例外? – Oded 2010-07-25 06:49:17
這個Dispatcher中的'this'是什麼。這是一個在UI線程上創建的UI元素嗎? – 2010-07-25 07:30:08
我剛纔說了這個描述。 是的,它是UI WPF App – Juk 2010-07-25 07:53:54