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 중국어 웹사이트의 기타 관련 기사를 참조하세요!