2016-07-27 2 views
0

내 컨트롤러에서이 방법이 있습니다비동기 작업의 반환을 사용하는 방법

public async Task<ActionResult> GetDetails(Query query) 
    { 
     var son = await Task.Run(() => 
     { 
      if(query.Export) 
      { 
       return RedirectToAction("GetDetails", "GridToolController"); 
      } 

       if (!query.Export) 
       { 
        db.Configuration.AutoDetectChangesEnabled = false; 
       } 
     } 
    } 

당신이 볼 수 있듯이, 내가 다른 컨트롤러에 가고 싶지만 수익을 쓸 때, 그것은 이러한 오류가 있습니다 :

익명 함수는 대리자를 반환 무효로 변환 할 수 없습니다 반환

이 때문에 의도 된 대리자 형식으로 반환 형식의 일부를 람다 식을 변환 할 수 없습니다

값 블록에서 암시 적으로 변환 가능하지 않음 대리자 반환 유형

이 컨트롤러에서 다른 컨트롤러로 어떻게 이동할 수 있습니까? 감사.

+3

이 전체 코드인가? 오류가 발생한 행과 함께 전체 코드를 입력하십시오. – Euphoric

+0

반환 유형'RedirectToAction'이 –

+1

인 것을 아는 것이 중요합니다 @ 유희 @ 질문을 편집했습니다. 전체 코드는 수백 줄 정도입니다. 그래서 오류가 발생한 곳을 알려줍니다. – jason

답변

1

익명 함수는 라인이 무효 반환하는 익명 함수 () =>를 만드는, 잘 설명하는 값

을 반환 할 수 없습니다 무효 반환 대표로 변환. 이 경우 혼란 스럽지만 Task.Run은 무효가 아닌 Task을 반환하지만 Task과 같은 일반적인 유형은 없습니다. 그러나 블록의 반환 형식 중 일부는 당신이 다른 일을 그 코드에 어떤 장소에서 추측 대리자의 반환 형식

에 암시 적으로 변환되지 않습니다 Task<TResult>

때문에 반환하는 Task.Run있다 반환하지 않는 것들은 RedirectToAction입니다. 유형의 명시 적 인 가능성이 해결되지하지만

var son = await Task.Run<ActionResult>(() => 

너무

  • 을 확인하는 가치가있을 수도 있습니다 코드의 일부 다른 점 또한 할 수 있습니다에를 즉, 당신이 문제를 찾을 수 있도록해야한다 작업의 올바른 사용과 구성 방법에 대해 생각해보십시오. 이 answer에는 몇 가지 지침이 있습니다. 반환 형식
관련 문제