|
Модераторы: Partizan, gambit |
|
ChiciucMaxim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 22.6.2008 Репутация: -1 Всего: нет |
Добрый день. Вопрос мой об ассинронных делегатах. Я не могу никак понять EndInvoke() дожидается окончания выполнения потока в котором выполняется задаваемая функция или EndInvoke() дожидается возврата задаваемой функции.
Вот пример: using System; using System.Collections.Generic; using System.Text; namespace Multithreading { class Program { public delegate void MyDelegate(); static void MyEndMethod(IAsyncResult l) { Console.WriteLine("In end method."); } static void DelegateFunction() { Console.WriteLine("In a delegate function"); } static void Main(string[] args) { MyDelegate ob = new MyDelegate(DelegateFunction); AsyncCallback cb = new AsyncCallback(MyEndMethod); IAsyncResult s = ob.BeginInvoke(cb, null); ob.EndInvoke(s); } } } Результат выполнения тут: In a delegate function. Я так понимаю что ob.EndInvoke(s) ждет лишь возврата функции MyEndMethod() выполняемой через делегат ob, так как не высвечивается "In end method.". Тот же результат получается и при замене "ob.EndInvoke(s)" на "s.AsyncWaitHandle.WaitOne(-1, true)". Не могу понять что же всетаки происходит. Помогите пожалуйста. |
|||
|
||||
mihryak |
|
||||
Опытный Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
т.е. callback будет вызван уже после завершения ожидания EndInvoke порядок вызовов такой: 1. DelegateFunction() 2. EndInvoke(s) 3. MyEndMethod если последней строчкой в main напишешь
то увидишь, что оба метода отработали |
||||
|
|||||
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |