IAsyncResult ar = demo.BeginRun(null, null);
// 可做其他工作...
string result = demo.EndRun(ar); // 阻塞直到完成
Console.WriteLine(result);
最簡單,但失去非同步優勢 (主執行緒仍阻塞)。
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 回應逾時)。
while (!ar.IsCompleted) {
Console.Write("."); // 視覺化進度
// 執行其他可中斷工作
}
string result = demo.EndRun(ar);
Console.WriteLine(result);
適合主控台顯示進度、遊戲迴圈等需主動控制流程的場景。