2017-01-25 3 views
-4

Как работает Async в .net 4.5 и выше? как он отличается от BeginInvoke и EndInvokeКак работает Async/ожидание .net 4.5

+2

Вы можете найти много ответов на этот вопрос в Интернете, и это не является конкретным вопросом для переполнения стека. Посмотрите это, чтобы узнать async/wait: 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 делает ваш метод асинхронным, и только этот код работает async. Например:

//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 возвращают задачу или задачу, которые инкапсулируют ваш тип возвращаемого значения. Эта задача позволяет другим методам ждать вашего метода. Таким образом, вы создаете цепочку, которая заканчивается в вашем графическом интерфейсе. Таким образом, вы не блокируете и не реагируете на GUI.

Я нашел эту схему через 1 секунду в гугле, описывающих это поведение довольно хорошо:

enter image description here

Это не так много, чтобы сделать с BeginInvoke и EndInvoke, потому что Invoke звонки только для использования Gui объектов разные потоки. Если возможно, вам следует избегать BeginInvoke и EndInvoke и использовать графический интерфейс только на вашем Mainthread.

+0

Привет, Пожалуйста, поместите некоторые диаграммы последовательности, потому что я знаю, что приведенная выше диаграмма скопирована с некоторого веб-сайта – TsunamiCoder

 Смежные вопросы

  • Нет связанных вопросов^_^