を非同期メソッドを実装します。は私が(非同期)を実装するために私を強制的にインタフェースを持って同期タスク
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'メソッドの本体が何をしているのかを知らなくても、それを伝えるのは難しいです。それがいつも素早ければ、それは問題ありません。ちょっとしたコードの警告を抑止できます。 –