ASP.Net 의 async+await 비동기 프로 그래 밍 실현

.NET Framework 4.5 프레임 워 크,C\#5.0 문법 에서 async 와 await 두 키 워드 를 통 해 새로운 작업 기반 비동기 프로 그래 밍 모델(TAP)을 도입 했다.이런 방식 에서 유사 한 동기 화 방식 으로 비동기 코드 를 작성 하여 비동기 프로 그래 밍 모델 을 크게 간소화 할 수 있다.
사용법:

public async Task<int> GetDotNetCountAsync()
{
  // Suspends GetDotNetCount() to allow the caller (the web server)
  // to accept another request, rather than blocking on this one.
  var html = await _httpClient.GetStringAsync("https://dotnetfoundation.org");

  return Regex.Matches(html, @"\.NET").Count;
}
요점!!!
1."async"는 하나의 방법 을 비동기 방법 으로 표시 합 니 다.비동기 방법 은 체 내 에"await"키 워드 를 결합 하여 사용 해 야 합 니 다.await 가 없 으 면 이 방법 은 일반적인 방법 과 같 습 니 다.비동기 방법의 명명 규칙 은 보통 Async 로 끝난다.
2."await"키 워드 는 비동기 방법 에서 만 사용 할 수 있 습 니 다.
3.async 비동기 방법 에서 await 작업 을 만 났 을 때 await 는 이 비동기 방법 이 계속 실행 되 지 않 는 것 을 막 고 이 비동기 측 을 걸 어 제어 권 을 이 비동기 방법의 호출 자 에 게 전달 합 니 다.
4.비동기 방법의 호출 자가 제어 권 을 획득 한 후:
1)호출 자가 비동기 방법의 반환 결 과 를 사용 해 야 한다 면 비동기 방법 이 실 행 될 때 까지 기 다 렸 다가 계속 아래로 실행 합 니 다.
2)호출 자가 비동기 방법의 반환 결과 에 관심 이 없 으 면 계속 실행 합 니 다.
필드 1:async 방법 중 await 사용 하지 않 음

static void Main(string[] args)
    {
      Console.WriteLine("   Main.....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ①
      GetResultAsync();
      Console.WriteLine("    Main....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ②
      Console.ReadKey();
    }

 
    async static Task<int> GetResultAsync()
    {
      Console.WriteLine("   GetResult.....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ③      Task.Delay(3000).Wait();
      Console.WriteLine("    GetResult.....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ④
      return 10;
    }
집행 결과:절차 ①―절차 ③―절차 ④―>절차 ②

결과 분석:
주 함수 Main 에서 비동기 방법 GetResultAsync 를 호출 할 때 비동기 방법 에'await'키워드 가 부족 하기 때문에 주 함 수 는 비동기 방법 절차 3,4 를 모두 실행 한 후에 절 차 를 계속 실행 해 야 합 니 다.2.실행 순 서 는 동기 화 방법 집행 순서 와 일치 합 니 다.
그리고 비동기 적 인 방법 은 문법 적 힌트 를 줍 니 다."await"키워드 가 부족 합 니 다.

장면 2:비동기 방법 으로 체 내 에서 await 를 만난 후 즉시 제어 권 을 호출 자 에 게 이전 합 니 다.

static void Main(string[] args)
    {
      Console.WriteLine("   Main.....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ①       GetResultAsync();
      Console.WriteLine("    Main....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ②
      Console.ReadKey();
    }
    async static Task<int> GetResultAsync()
    {
      Console.WriteLine("   GetResult.....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ③
      await Task.Delay(3000);
      Console.WriteLine("    GetResult.....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ④
      return 10;
    }
집행 결과:절차 ① 절차 ③―절차 ②―절차 ④

결과 분석:
주 함수 Main 에서 비동기 방법 GetResultAsync 를 호출 하여 비동기 방법 에서"await"키 워드 를 만 났 을 때
1)현재 비동기 방법 을 차단 하고 즉시 호출 자 주 함수 Main 에 제어권 전달
2)주 함수 가 제어 권 을 획득 한 후 계속 실행 하 는 방법 체 내 절차 2,GetResultAsync 방법 은 비동기 실행(비동기 작업 이 끝 난 후 실행 절차 4).
장면 3:비동기 방법 체 내 에서 await 를 만난 후 즉시 제어 권 을 호출 자의 손 에 넘 기 고 호출 자 는 비동기 방법 이 결 과 를 되 돌려 줄 때 까지 기 다 려 야 합 니 다.

static void Main(string[] args)
    {
      Console.WriteLine("   Main.....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ①
      Task<int> res = GetResultAsync();
      Console.WriteLine("    Main....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ②
      Console.WriteLine("    :" + res.Result + "....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ③
      Console.ReadKey();
    }
    async static Task<int> GetResultAsync()
    {
      Console.WriteLine("   GetResult.....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ④
      await Task.Delay(3000);
      Console.WriteLine("    GetResult.....  ID:" + Thread.CurrentThread.ManagedThreadId.ToString());//  ⑤
      return 10;
    }
집행 결과:절차 ①―절차 ④―절차 ②―절차 ⑤―절차 ③

결과 분석:
주 함수 Main 에서 비동기 방법 GetResultAsync 를 호출 하여 비동기 방법 에서"await"키 워드 를 만 났 을 때
1)현재 비동기 방법 을 차단 하고 즉시 호출 자 주 함수 Main 에 제어권 전달
2)주 함수 가 제어 권 을 획득 한 후 계속 실행 하 는 방법 은 체 내 절차 2 와 절차 3 이 고 GetResultAsync 방법 은 비동기 로 실행 된다.
3)주 함수 가 3 단 계 를 실행 할 때 3 단 계 는 비동기 방법의 반환 결 과 를 인쇄 해 야 하기 때문에 비동기 방법 이 끝 날 때 까지 기 다 려 야 계속 할 수 있다.그래서 먼저 5 절 차 를 집행 한 다음 에 3 절 차 를 계속 집행 해 야 한다.
마지막 으로 비동기 프로 그래 밍 을 할 때 우 리 는 보통 Task 와 결합 하여 사용한다.
ASP.Net 의 async+await 비동기 프로 그래 밍 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 ASP.Net async+await 비동기 프로 그래 밍 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기