C#의 비동기 프로그래밍 4A 비동기 사례 분석 및 비동기 프로그램 개발 대기

黄舟
풀어 주다: 2017-09-16 11:19:49
원래의
1897명이 탐색했습니다.

C# 비동기 프로그램 개발 시리즈가 심화됨에 따라 비동기 프로그램 작성이 점점 더 쉬워진다는 것을 알게 될 것입니다. 사물의 발전은 단순한 것에서 복잡한 것, 그리고 단순한 것까지 이렇습니다.

C# 5.0에서는 다음과 같이 async 및 Wait 키워드를 통해 빠른 비동기 프로그램 개발을 달성할 수 있습니다.


        static void Main(string[] args)
        {            var task = GetResultAsyc();
            Console.WriteLine(String.Format("Main 线程:{0}", Thread.CurrentThread.ManagedThreadId));            
            for (int i = 0; i < 100; i++)
            {
                Console.Write(".");
                Thread.Sleep(10);
            }
            Console.WriteLine();
            Console.WriteLine(String.Format("Main 线程:{0},获取异步执行结果:{1}", Thread.CurrentThread.ManagedThreadId, task.Result));
            
            Console.ReadLine();
        }        private static async Task<int> GetResultAsyc()
        {
            Console.WriteLine(String.Format("线程:{0}", Thread.CurrentThread.ManagedThreadId));            
            var result = await Task.Run(() => {
                Console.WriteLine(String.Format("Task 线程:{0}", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(5000);                return 10;
            });            return result;
        }
로그인 후 복사

프로그램 설명:

1 async 로 표시된 메서드를 사용하여 할 수 있음을 나타냅니다. 비동기적으로 호출되는 메서드를 수행하려면 이 메서드의 이름이 Async로 끝나야 합니다.

2. 비동기 메서드가 실행된 후 반환 값이 있는 경우 비동기 메서드의 반환 유형은 Task이어야 합니다. 반환 값이 없으면 Task여야 합니다.

3. async로 표시된 메서드에서는 Task를 시작하거나 다른 비동기 메서드를 호출할 수 있습니다. 호출 전에 await을 사용하면 호출 스레드가 직접 반환되어 후속 코드를 실행합니다. 대기 뒤에 호출된 프로그램은 하나 이상의 새 스레드(중첩 및 기타 요인에 따라 다름)에서 실행됩니다.

4. 새 스레드의 함수가 실행된 후 반환 결과가 새 스레드에 의해 반환됩니다(여기서는 호출 스레드로 반환되지 않고 새 스레드가 호출 스레드에서 얻은 Task.Result를 설정함). .

5. 호출 스레드에서 Wait Task 또는 Task.Result를 사용하면 호출 스레드는 새 스레드가 실행을 완료하고 결과를 얻을 때까지 대기(차단)합니다.

프로그램 출력은 다음과 같습니다.

앞서 소개한 것처럼 .Net Framework 4.5 이후 관련 IO, Net 등은 모두 async 및 Wait 호출을 지원하며 위 버전을 기반으로 하는 모든 C# 비동기 프로그램 개발은 가능합니다. 단순화.

이제 .Net 웹 개발이 비동기 프로그래밍을 대중화하기 시작하여 웹 IO 처리량을 향상시키는 데 도움이 됩니다.

위 내용은 C#의 비동기 프로그래밍 4A 비동기 사례 분석 및 비동기 프로그램 개발 대기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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