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

C# 非同步程式設計基礎(一·中):三種等待完成策略對比

     編輯:關於C語言

策略 1:Begin → 直接 End (同步等待)

IAsyncResult ar = demo.BeginRun(null, null);
// 可做其他工作...
string result = demo.EndRun(ar); // 阻塞直到完成
Console.WriteLine(result);

最簡單,但失去非同步優勢 (主執行緒仍阻塞)。

策略 2:AsyncWaitHandle.WaitOne (可設逾時)

IAsyncResult ar = demo.BeginRun(null, null);
// 做其他工作...
ar.AsyncWaitHandle.WaitOne(1000, false); // 最多等 1 秒
if (ar.IsCompleted) {
    string result = demo.EndRun(ar); // 立即返回
    Console.WriteLine(result);
} else {
    Console.WriteLine("逾時,無法取得結果");
}

適合需限制等待時間的場景 (如 UI 回應逾時)。

策略 3:輪詢 IsCompleted (非阻塞檢查)

while (!ar.IsCompleted) {
    Console.Write("."); // 視覺化進度
    // 執行其他可中斷工作
}
string result = demo.EndRun(ar);
Console.WriteLine(result);

適合主控台顯示進度、遊戲迴圈等需主動控制流程的場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved