関数を非同期にしたいので、単純に追加します。async
このような:
public async static void something(){
}
あなたはそのreturn-typeがvoid
。 returnが次のようになっているので、ブロックせずにこの関数を非同期的に呼び出したいだけです。void
so 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 Геннадий Ванин