C#에서 비차단 메서드 호출 단순화
C#은 비차단 메서드, 즉 기본 스레드를 중단하지 않고 비동기적으로 실행되는 메서드를 생성하는 여러 가지 방법을 제공합니다. WCF의 [OperationContract(IsOneWay = true)]
특성이 이 기능을 제공하지만 단순한 시나리오에서는 과잉일 수 있습니다.
가장 간단한 접근 방식은 ThreadPool.QueueUserWorkItem
을 활용하는 것입니다. 이 방법은 스레드 풀에 작업을 효율적으로 추가하여 비동기 실행을 가능하게 합니다.
다음은 예시입니다.
<code class="language-csharp">class Foo { static void Main() { ThreadPool.QueueUserWorkItem(_ => FireAway()); //Asynchronous execution Console.WriteLine("Immediate execution"); } static void FireAway() { System.Threading.Thread.Sleep(5000); Console.WriteLine("Execution after 5 seconds"); } }</code>
또는 C# 5.0 이상 버전에서는 스레드 풀 스레드에서 비동기 실행을 달성하기 위한 보다 현대적이고 간결한 방법을 제공하는 Task.Run
을 제공합니다.
<code class="language-csharp">Task.Run(() => FireAway());</code>
ThreadPool.QueueUserWorkItem
과 Task.Run
모두 비동기 메서드 실행 중에 메인 스레드가 차단되는 것을 방지합니다.
그러나 Main
메소드가 종료되기 전에 메소드 완료가 필수적인지 여부를 고려하는 것이 중요합니다. ASP.NET과 같은 환경에서는 비동기 작업의 조기 종료를 방지하기 위해 추가 메커니즘이 필요할 수 있습니다.
위 내용은 C#에서 비차단 메서드 호출을 어떻게 간단하게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!