我想pictureBox1在UI(主線程)中顯示CurrImage,同時CurrImage將在後臺線程中修改,這需要一段時間才能完成。當後臺線程完成處理時,它應該將舊的CurrImage替換爲pictureBox1中的新的CurrImage。UI線程和後臺線程使用相同全局變量
1)我得到一個異常 2)我在UI線程中嘗試了一個不同的圖像變量,同時在後臺線程中修改了CurrImage,它運行良好。
如何管理兩個線程以在同一個全局變量上運行? 在此先感謝
private Image CurrImage; int index;
private void button4_Click(object sender, EventArgs e) {
index++;
if (index >= images.Count) index = 0;
CurrImage = images[index]; if (!bkGrndWker2.IsBusy) bkGrndWker2.RunWorkerAsync();
pictureBox1.Image = CurrImage;
}
private void bkGrndWker2_DoWork(object sender, DoWorkEventArgs e)
{
this.pictureBox1.Image = Iprocessing.Colour_style1((Bitmap)CurrImage);
}
帖子異常 – 2013-02-14 16:57:27
這是WPF或形式?這是.NET 4.5還是一些老版本?請使用問號標籤 – GregC 2013-02-14 17:04:29
我正在使用.NET 4. 這是我得到的異常「System.Drawing.dll中發生類型'System.InvalidOperationException'的第一次機會異常」 實際上,如果我移動列表中的「圖像」該索引使後臺線程和主線程處理兩個不同的圖像,它工作正常。但是,如果我讓兩個線程每次點擊下一個圖像時處理相同的圖像,它只會偶然成功。我試圖從後臺線程訪問UI元素Invoke((Action)(()=> {this.pictureBox1.Image = Iprocessing.Colour_style1((Bitmap)CurrImage);})); – Basco 2013-02-15 04:37:43