Обязательно ли вызывать EndInvoke?
От: drpadawan  
Дата: 09.10.06 18:00
Оценка:
1. Для синхронизации есть механизм BeginInvoke/EndInvoke. В документации не описывается четко, обязателен ли EndInvoke, в особенности, если в вызывающем потоке синхронизации не нужно. То есть, когда вызывающий поток не хочет ждать окончания работы вызова в "управляемом" потоке и когда ему по-фигу на результаты.

2. Что будет, если один и тот же делегат вызывается через BeginInvoke 2 и более раз подряд, без вызова EndInvoke.

В примерах смотрел. Во всех присутствует вызов EndInvoke, кроме отдельного случая, где возможна ситуация с обходом вызова EndInvoke (т.е. в вызывающем потоке дается 10 секунд на выполнение асинхронной операции, если операция выполнилась за это время, то вызывается EndInvoke, если нет — то и суда нет — это H:\vs2003\SDK\v1.1\Samples\Technologies\Remoting\Advanced\AsyncDelegate\AsyncDelegate.cs линия 174).
Re: Обязательно ли вызывать EndInvoke?
От: TK Лес кывт.рф
Дата: 09.10.06 18:11
Оценка:
Hello, "drpadawan"
> 1. Для синхронизации есть механизм BeginInvoke/EndInvoke. В документации не описывается четко, обязателен ли EndInvoke, в особенности, если в вызывающем потоке синхронизации не нужно. То есть, когда вызывающий поток не хочет ждать окончания работы вызова в "управляемом" потоке и когда ему по-фигу на результаты.
>

А в чем сложность вызвать EndInvoke в callback методе передаваемом в BeginInvoke?

> 2. Что будет, если один и тот же делегат вызывается через BeginInvoke 2 и более раз подряд, без вызова EndInvoke.

>

Если возвращаемые значения не интересуют то, для делегата это никак не критично. Хотя, могут быть ситуации когда, делегат возвращает достаточно "тяжелый" объект для которого стоит явно освобождать. В подобном случае, стоит вызвать EndInvoke и освободить объект.
Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Обязательно ли вызывать EndInvoke?
От: drpadawan  
Дата: 09.10.06 18:16
Оценка:
Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.