0

(非同期/待機する初心者)

多くのクラスにドリルダウンされている Initialize() 関数をチェーンしています。
各クラスには、次の初期化メソッドがあります。

    public async Task Initialize(string fileName)

ファイナルクラスになったら、どうすればいいですか?
次のような単純な関数を実行したい:

public async Task Initialize(string dllPath)
{         
    await PrintThePath(dllPath);
}

public void PrintThePath(string dllPath)
{
     Console.WriteLine(dllPath);
}

もちろん、「ボイドを待つことができません」というエラーが表示されます。
だから私は論理的に何か間違ったことをしています。

誰か説明してくれませんか?

4

1 に答える 1

3

この場合、単純な同期メソッドであるため、PrintThePath直接呼び出すだけです。await

public async Task Initialize(string dllPath)
{
    PrintThePath(dllPath);
}

このサンプルを見ると、 とマークする理由はないようInitializeですasync。それは何のasync仕事もせず、override方法でもありません。このメソッド自体をマークする必要はありませんasync(コンパイラはこれについて警告します)。

編集

InitializeOPは、警告をエラーとしてビルドし、実際にはそうではありませんが、このパターンを維持する必要があると指定しましたawait。警告を抑制するコードは次のとおりです

#pragma warning disable 1998
    public async Task Initialize(string dllPath)
    {
        PrintThePath(dllPath);
    }
#pragma warning restore 1998
于 2013-03-11T15:41:49.823 に答える