首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 彈出視窗顯示進度條實作(三)

     編輯:關於C語言

背景執行緒邏輯

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 執行緒完成委派
  • 進度條更新需在 UI 執行緒,故用 Invoke;開啟視窗用 BeginInvoke 避免死結
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved