Здравствуйте, <Аноним>, Вы писали:
А>А>public delegate void ActionStart(object someAction);
А>public void ActionCallback(IAsyncResult iar) {}
А>public void DoAction(object action) {
А> // do some long action
А>}
А>public void DoActionAsync(object action) {
А> ActionStart myAction = new ActionStart(DoAction);
А> AsyncCallback myCallback = new AsyncCallback(ActionCallback);
А> // "call do action"
А> (CODE HERE)
А>}
А>
А> What lines of code, at the location (CODE HERE) above, call DoAction asynchronously and then block until it was finished?
А>А>Choice 1
А> IAsyncResult iar = myAction.BeginInvoke(action, myCallback, null);
А>myAction.EndInvoke(iar);
А>Choice 2
А> myAction.BeginInvoke(action, null, null);
А>myAction.WaitOne();
А>Choice 3
А> myAction.BeginInvoke(action, null, null);
А>myAction.EndInvoke();
А>Choice 4
А> myAction.BeginInvoke();
А>Choice 5
А> IAsyncResult iar = myAction.BeginInvoke(action, null, null);
А>myAction.EndInvoke(iar);
А>
А>задаю вопрос потому что меня этот вопрос загнал в тупик
А>по-моему 1 и 5 вариант ничем не отличаются...
А>точнее отличаются но обы выполнят условия поставленной задачи
Доброго времени суток!
А по-моему очень даже отличается.
Если убрать myCallback из BeginInvoke — то функция ActionCallback никогда не вызовется!
А с первым вариантом отработает сначала DoAction, а затем отработает ActionCallback.
... << RSDN@Home 1.2.0 alpha rev. 668>>