0
我有一個程序,在工作時顯示其不同圖標的進度。該過程是通過按下btnApply buton開始的。c#ThreadPool/WaitCallback - 在這種情況下如何委派?
ManualResetEvent[] wait;
private void btnApply_Click(object sender, EventArgs e)
{
wait = new ManualResetEvent[1];
wait[0] = new ManualResetEvent(false);
ThreadPool.QueueUserWorkItem(new WaitCallback(doApply), 0);
WaitHandle.WaitAny(wait);
btnApply.Text = "Done!";
}
private void doApply(object dummy)
{
for (int i = 0; i < 14; i++)
{
setPic(i, bmTODO);
}
// do something
for (int i = 0; i < 14; i++)
{
setPic(i, bmWORK);
// do something
setPic(i, bmOK);
}
}
public void setPic(int i, Image img)
{
switch (i)
{
case 0: pictureBox1.Image = img; break;
case 1: pictureBox2.Image = img; break;
case 2: pictureBox3.Image = img; break;
case 3: pictureBox4.Image = img; break;
case 4: pictureBox5.Image = img; break;
case 5: pictureBox6.Image = img; break;
case 6: pictureBox7.Image = img; break;
case 7: pictureBox8.Image = img; break;
case 8: pictureBox9.Image = img; break;
case 9: pictureBox10.Image = img; break;
case 10: pictureBox11.Image = img; break;
case 11: pictureBox12.Image = img; break;
case 12: pictureBox13.Image = img; break;
case 13: pictureBox14.Image = img; break;
default: break;
}
}
隨着Win7和2處理器這個'它應該'的作品。
但在XP上我必須完成任務 - 但是我怎麼能在這個特殊的代碼中做到這一點?我不想在doApply中指定每個picturebox。
我也試圖與一個代表:
public delegate void setPicDelegate(int i, Image img);
但沒有satistying結果:程序掛起或圖標在產品總數結束最近顯示。
我該怎麼辦?
謝謝你史蒂夫, 工作正常。 –
但現在我有一個新的困難:
BackgroundWorker的具有打開一個新的形式,像一個消息框,但有更多的複雜的按鈕文本。我該怎麼去? 'r = myMessageBox(「Message」,「Caption」); .. 私人的DialogResult myMessageBox(字符串,字符串B) { 使用(My3MessageForm myForm的新= My3MessageForm(A,B)) { myForm.ShowDialog(); 如果(MessageSucceded) { 返回myForm.DialogResult; } 其他 { 回報DialogResult.Abort; } } }'
我該怎麼辦? –
@MartinS你打開這個表單有什麼問題? – Servy