BeginInvoke - а где же ассинхронность?
От: bulatich  
Дата: 06.06.03 12:20
Оценка:
??? BeginInvoke работает как блокирующий вызов метода.

Вот кусок кода:

  delegate void  MakeWorkDelegate();

  void InternalFunc()
  {  
    Debug.WriteLine("InternalFunc=>");
    System.Threading.Thread.Sleep(20000);
    Debug.WriteLine("<=InternalFunc");
    ...................
  }

  public void Func()
  {
    Debug.WriteLine("Func=>");
    new MakeWorkDelegate(InternalFunc).BeginInvoke(null, null);
    Debug.WriteLine("<=Func");
    .......................
  }


И как вы думаете будет выглядеть дебаг?
Вот так у меня выглядит:

Func=>
InternalFunc=>
<=InternalFunc
<=Func

BeginInvoke не возвращается в течении опять же 20 секунд, пока не завершится InternalFunc? Т.е. вызов метода InternalFunc — блокирующий. В чём дело? Это COM+ приложение, если это важно.
Спасибо за участие.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.