2017-01-25 6 views
-4

Async awaitは.net 4.5以上でどのように動作するのですか? BeginInvokeとEndInvokeとはどのように違うのですか?Async/awaitが.net 4.5でどのように動作するか

+2

これはウェブ上で多くの回答を見つけることができますが、これはスタックオーバーフローに関する特定の質問ではありません。 async/await:http://stackoverflow.com/documentation/c%23/48/async-await#t=201701250624127863526を学び、良い質問をしてください。http://stackoverflow.com/ help/how-to-ask – Sebi

+0

Async/awaitのスレッドの概念をいくつかの図で説明できますか? – TsunamiCoder

+0

@TsunamiCoder [async intro](http://blog.stephencleary.com/2012/02/async-and) -await.html)は役に立ちました。 –

答えて

1

Asyncとawaitはタスクライブラリで動作します。メソッドを記述して非同期にしたい場合は、メソッドを非同期としてマークし、メソッド内のどのタスクでも呼び出す必要があります。キーワードを待つだけでメソッドが非同期になり、このコードだけが非同期で実行されます。例:

//This Method isn't async because there is no await 
private async Task DoSomething() 
{ 
    //Some work 
} 

//This method is async because it awaits sth. 
private async Task DoSomething() 
{ 
    await SomeOtherStuff(); 
} 

asyncメソッドは、戻り値の型をカプセル化するTaskまたはTaskを返します。このタスクは、あなたのメソッドを待っている他のメソッドを許可します。このようにして、GUIで終わるチェーンを構築します。だからあなたはGUIがブロックされておらず、応答もありません。

私はかなりよく、この動作を説明するグーグルの1秒後に、この図を見つけました:呼び出しコールがちょうどのGUIオブジェクトを使用するためのものであるので、これは、BeginInvokeメソッドとEndInvokeをとはあまりありませんがあり

enter image description here

異なるスレッド。可能であれば、BeginInvokeとEndInvokeを避け、MainthreadでのみGUIを使用してください。

+0

こんにちは、上の図が一部のWebサイト – TsunamiCoder

関連する問題