> 백엔드 개발 > C++ > C#에서 비차단 메서드 호출을 어떻게 간단하게 만들 수 있나요?

C#에서 비차단 메서드 호출을 어떻게 간단하게 만들 수 있나요?

DDD
풀어 주다: 2025-01-18 15:46:08
원래의
668명이 탐색했습니다.

How Can I Make Non-Blocking Method Calls in C# Simply?

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.QueueUserWorkItemTask.Run 모두 비동기 메서드 실행 중에 메인 스레드가 차단되는 것을 방지합니다.

그러나 Main 메소드가 종료되기 전에 메소드 완료가 필수적인지 여부를 고려하는 것이 중요합니다. ASP.NET과 같은 환경에서는 비동기 작업의 조기 종료를 방지하기 위해 추가 메커니즘이 필요할 수 있습니다.

위 내용은 C#에서 비차단 메서드 호출을 어떻게 간단하게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿