??? 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+ приложение, если это важно.
Спасибо за участие.
Hello, "bulatich"
> BeginInvoke не возвращается в течении опять же 20 секунд, пока не завершится InternalFunc? Т.е. вызов метода InternalFunc — блокирующий. В чём дело? Это COM+ приложение, если это важно.
>
У наследников ServicedComponent вызов любого метода через Delegate.BeginInvoke будет блокирующим.
Это ограничение by design. Используйте класс Thread или ThreadPool
Posted via RSDN NNTP Server 1.5
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.