Re: вопрос про асинхнонность с BrainBench
От: KonstantinBart Россия  
Дата: 04.12.06 23:45
Оценка:
Здравствуйте, <Аноним>, Вы писали:


А>
А>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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.