関数を非同期にしたいので、単純に追加します。asyncこのような:
public async static void something(){
}
あなたはそのreturn-typeがvoid。 returnが次のようになっているので、ブロックせずにこの関数を非同期的に呼び出したいだけです。voidso noawait必要です。
しかし、Visual Studio 2012ではこれをコンパイルすることはできません。await?
関数を作るサンプルを教えてください。async使うことなくawait。
多分あなたは何を誤解していると思いますasyncします。警告はまさにその通りです。asyncしかし使用しないでくださいawaitどこでも、あなたの方法非同期にはなりません。これを呼び出すと、メソッド内のすべてのコードが同期的に実行されます。
また、使用しないようにしてくださいasync voidメソッドを使用すると、例外の処理が難しくなります。
asyncメソッド自体が非同期になるようにします。awaitメソッド内のどこか?上記のサンプルのように、私が呼び出すとsomething()、それは現在のスレッドをブロックしますか? - Eric Yinsomething()(そしていいえawait)その後、それはスレッドをブロックします。それは警告があなたに伝えようとしているものです。 - svickasyncあなたの方法が魔法のようにブロックされないようにするものではありません。他のスレッドでコードを実行したい場合は、Task.Run()。 - svickTask.Run()別のスレッドで実行する - svick
asyncメソッドawait体内で - Gennady Vanin Геннадий Ванин