private void ThreadFun() {
// 非同步開啟進度條視窗(不等待)
this.BeginInvoke(new MethodInvoker(ShowProcessBar));
Thread.Sleep(1000); // 等視窗顯示
bool increased = false;
do {
Thread.Sleep(50);
// 同步呼叫增加進度(等待完成)
object ret = this.Invoke(myIncrease, new object[] { 2 });
increased = (bool)ret;
} while (increased);
}
// 啟動執行緒
Thread thd = new Thread(new ThreadStart(ThreadFun));
thd.Start();
BeginInvoke:非同步,立即返回,不阻塞背景執行緒Invoke:同步,阻塞直到 UI 執行緒完成委派Invoke;開啟視窗用 BeginInvoke 避免死結