C# 通用程式碼執行逾時機制:完整指南
在軟體開發中,控製程式碼區塊執行時間至關重要,尤其在處理不可靠或耗時的外部相依性(如 API 呼叫或資料庫查詢)時。為此,需要一種通用的方法來為單行程式碼設定逾時。
實作通用超時機制
建構通用逾時機制的核心在於終止長時間運行的程式碼並攔截可能出現的錯誤。為此,我們可以採用分層解:
CallWithTimeout
),它接收一個操作和超時持續時間作為輸入。此方法在單獨的執行緒上啟動程式碼執行,並附加包裝委託來追蹤進度。 TimeoutException
。 實作操作
以下是具體的實作細節:
<code class="language-csharp">class Program { static void Main(string[] args) { // 设置 6000 毫秒(6 秒)的超时 CallWithTimeout(FiveSecondMethod, 6000); // 设置 4000 毫秒(4 秒)的超时 CallWithTimeout(FiveSecondMethod, 4000); } static void FiveSecondMethod() { Thread.Sleep(5000); } } static void CallWithTimeout(Action action, int timeoutMilliseconds) { Thread threadToKill = null; Action wrappedAction = () => { threadToKill = Thread.CurrentThread; try { action(); } catch (ThreadAbortException ex) { Thread.ResetAbort(); // 避免强制终止 } }; IAsyncResult result = wrappedAction.BeginInvoke(null, null); if (result.AsyncWaitHandle.WaitOne(timeoutMilliseconds)) { wrappedAction.EndInvoke(result); } else { threadToKill.Abort(); throw new TimeoutException(); } }</code>
此實作可讓您以明確定義的逾時執行程式碼,同時提供靈活地處理和優雅地控制執行過程。
以上是如何在 C# 中實現程式碼執行的通用逾時機制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!