2014-09-01 11 views
-2

async 메서드를 시도하는 중 다음 오류가 발생합니다. Microsoft Async Example비동기/대기 메서드 오류

연산자는 비동기 방식

(가) 비동기 IS에 '기다리고'방법 내에서 사용할 수 있으며, 나는 그것이 거의 같은 생각 '기다린다':이 예를 다음입니다 Microsoft 예제.

내가 뭘 잘못하고있어?

버튼 메소드 서명이 async이없는 경우 당신은 await를 가질 수 없습니다

private void btn_Async_Click(object sender, EventArgs e) 
    { 
     GeneralFeatures gf = new GeneralFeatures(); 
     Task<long> getLongRunningData = gf._Async(); 

     long answer = await getLongRunningData ; 
    } 

비동기 방법

class GeneralFeatures 
{ 
public async Task<long> _Async() 
    { 
     ///// LONG RUNNING TASK ///////// 
     int count = 0; 
     int j = 1101000; 
     long a = 2; 
     while (count < j) 
     { 
      long b = 2; 
      int prime = 1;// to check if found a prime 
      while (b * b <= a) 
      { 
       if (a % b == 0) 
       { 
        prime = 0; 
        break; 
       } 
       b++; 
      } 
      if (prime > 0) 
       count++; 
      a++; 
     } 
     ///// LONG RUNNING TASK ///////// 

     return a; 
    } 
} 
+2

'private void btn_Async_Click' 당신이'async'로 정의한 곳을 정확히 말해주십시오. –

답변

2

을 클릭합니다. private void btn_Async_Click(object sender, EventArgs e)

수 있어야에서

없는 async : private async void btn_Async_Click(object sender, EventArgs e)는 시도해, 또는 하나에서 비동기 메서드를 호출합니다.

+0

실제로. 그리고 이것은 첫 번째 메소드 시그니처로 private 비동기 void startButton_Click (객체 센더, RoutedEventArgs e)가있는 링크 된 페이지의 예제와 일치합니다. – Chris

+1

@Chris 보지 않아도 분명히 누락되었습니다. :) – Noctis

+0

당신의 대답이 옳았 던 이유에 대한 증거가 아니라 그의 코드가 그가 쓰고 있다고 생각했던 코드와 다른 점 . 당신의 대답이 매우 행복하게 외부 참조를위한 필요없이 서 있다고. – Chris