I (비동기) 작업을 구현하기 위해 저를 강제하는 인터페이스가 있습니다는 비동기 메소드를 구현 기적
namespace Microsoft.Owin.Security.Infrastructure
{
public interface IAuthenticationTokenProvider
{
..
Task CreateAsync(AuthenticationTokenCreateContext context);
..
}
}
나는이 방법을 구현하고자하지만 난 아무것도 기다리고 아니에요을. 나는 몇 가지 작업을 뭔가를 기다리고 또는 반환해야하지만, 그렇지 않으면 내 코드는 컴파일되지 않습니다 :
public class MyImplementation: IAuthenticationTokenProvider
{
public async Task CreateAsync(AuthenticationTokenCreateContext context)
{
/// do something synchronously.
await something here? ??
}
}
내 질문은 : 어떻게 비동기 적으로 일을하지 않고이 방법을 구현하는 것이? 나는 몇 가지 해결책 (await를 task.Yield()
을 발견, 또는 await Task.Run(() => {}))
, 아직 나는 완전히 올바른 구현 및 이유 일 것입니다 무슨 이해할 수없는 한 적이
아무 것도 기다리지 않으면 코드가 제대로 컴파일되어야합니다. 실제로 비동기 적이 지 않습니다. 그것은 귀하의 경우에는 IO를 수행하지 않는 기본적으로 빠른 구현 -하지만 그렇지 않으면 당신이 정말로 비동기 적으로 일을해야 괜찮아있을 수도 ... –
만약 내가 이렇게 컴파일하는 동안 경고를 얻을 : "비동기 메서드가 부족합니다 ' '연산자를 기다리고 동기식으로 실행됩니다.' 왜 내가이 경고를 받는가? 왜 중요합니까? –
글쎄, 경고 자체가 말하는 - 비동기 메서드가 있지만 동기식으로 완료됩니다. 당신의 경우에, 그것은 당신이 원하는 것일 수도 있습니다. 'CreateAsync' 메쏘드의 몸체가 무엇을하는지 모른 채로 말하기는 어렵습니다. 항상 빠르다면 괜찮습니다. 그런 코드에 대한 경고는 표시하지 않을 수 있습니다. –