我的代碼有問題,我無法修復它。WPF調度程序/線程問題
private static void SetupImages(object o)
{
int i = (int)o;
BitmapImage bi = GetBitmapObject(i);
img = new System.Windows.Controls.Image();//declared as static outside
img.Source = bi;//crash here
img.Stretch = Stretch.Uniform;
img.Margin = new Thickness(5, 5, 5, 5);
}
這被稱爲是這樣的:
for (int i = 0; i < parameters.ListBitmaps.Count; i++)
{
ParameterizedThreadStart ts = new ParameterizedThreadStart(SetupImages);
Thread t = new Thread(ts);
t.SetApartmentState(ApartmentState.STA);
t.Start(i);
t.Join();
//SetupImages(i);
parameters.ListImageControls.Add(img);
}
它總是崩潰在這條線:img.Source =雙向; 錯誤是: 「‘System.InvalidOperationException’類型的未處理的異常出現在WindowsBase.dll
其他信息:因爲不同的線程擁有它調用線程不能訪問此對象」
由於
感謝您的回答。 BitmapImage來自這裏: private static BitmapImage GetBitmapObject(int nPos) { return parameters.ListBitmaps [nPos]; } 我想從磁盤加載一些位圖文件並將它們添加到網格。我需要在一個線程中執行此操作,以便在加載圖像時更新狀態窗口。 – phm 2010-03-24 09:22:22