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