在不考慮複雜情況下,我們可以採用不安全的線程調用,即允許子線程操作主線程裡的控件狀態,在初始化的時候後,加上這麼一句:
Control.CheckForIllegalCrossThreadCalls = false;
//線程的不安全調用,允許線程直接調用主線程控件
如果採用安全的線程調用,則可以採用委託 invoke 方法。
//模擬進度條
private void Send()
{
int i = 0;
while (i <= 100)
{
//顯示進度信息
this.ShowPro(i);
i++; //模擬發送多少
Thread.Sleep(100);
}
Thread.CurrentThread.Abort();
}
private delegate void ProgressBarShow(int i);
private void ShowPro(int value)
{
if (this.InvokeRequired)
{
this.Invoke(new ProgressBarShow(ShowPro), value);
}
else
{
this.progressBar1.Value = value;
this.label1.Text = value + "% Processing...";
}
}
{
Thread thread = new Thread(new ThreadStart(Send)); //模擬進度條
thread.IsBackground = true;
thread.Start();
}
沒有留言:
張貼留言