2014-11-18 4 views
0

내 웹 API 작업 메서드에서 비동기 메서드를 호출하지만 "암시 적으로 Employee 형식의 작업을 Employee로 변환 할 수 없습니다."오류가 발생합니다.웹 API 작업 메서드에서 비동기 메서드 호출

무엇을해야합니까? 이 같은

public IHttpActionResult GetEmployee() 
{ 

    // Get employee info 
    Employee emp = myDataMethod.GetSomeEmployee(); 

    return Ok(emp); 
} 

그리고 방법 내가 전화 한 외모 : :이 호출 할 수있는 내가 그렇게 할 필요가 무엇

public static async Task<Employee> GetSomeEmployee() 
{ 
    Employee employee = new Employee(); 

    // Some logic here to retrieve employee info 

    return employee; 
} 

내 웹 API 동작 방법은 다음과 같습니다 직원 정보를 검색하는 방법?

P. GetSomeEmployee() 메서드는 직원 데이터를 검색하기 위해 다른 비동기 호출을 만들기 때문에 비동기 적이어야합니다.

답변

4

메서드를 동 기적으로 호출하거나 await을 사용해야합니다.

public async Task<IHttpActionResult> GetEmployee() 
{ 

    // Get employee info 
    Employee emp = await myDataMethod.GetSomeEmployee(); 

    return Ok(emp); 
} 
+0

을 고려하여이 웹입니다 : 예 : (GetSomeEmployee() 완료되면 계속 즉시 반환 GetEmployee() 등)

public IHttpActionResult GetEmployee() { // Get employee info Employee emp = myDataMethod.GetSomeEmployee().Result; return Ok(emp); } 

비동기를 :

기적 (GetEmployee()GetSomeEmployee()까지 완료를 차단합니다) 내 웹/모바일 앱의 API 메소드가 호출됩니다. 동기식으로 호출하여 일부 데이터를 반환하는 것이 더 적합합니까? 비동기식으로 호출하면 웹 API가 데이터없이 OK를 반환한다는 것을 의미합니까? – Sam

+1

"return OK"란 무엇을 의미합니까? 'async' 메쏘드의 호출자는 여러분이 여기서해야 할 것과 비슷한 것을해야합니다 : 즉, 결과를 기다리거나 그 자체가'async' 메쏘드가됩니다. 기다리는 것이 의미가있는 시점에 도달하거나, UI 이벤트 핸들러 또는 메소드가 실제로 값을 반환하지 않는 것과 유사한 것을 처리 할 때까지 호출 체인에서 동일한 결정을 내려야합니다 (호출자는 작업이 완료되었는지 여부를 신경 쓸 필요가 없습니다. –

+0

GetSomeEmployee() 메서드를 비동기 적으로 호출하면 결과를 얻을 때까지 GetEmployee() 액션 메서드가 대기합니까? 지금 비동기 프로그래밍에 들어가고 있으며 동작에 대해 명확하지 않습니다. GetEmployee() 액션 메소드가 응답을 반환하기 전에 결과를 기다리는 것이 분명하다. – Sam

관련 문제