Событие асинхронно.
От: L0rdNet  
Дата: 25.10.08 12:14
Оценка:
Облазил весь форум, но все равно не могу понять, как правильно (корректно) вызвать события асинхронно.

Обязательно вызывать EndInvoke?
Если не буду вызывать EndInvoke, какие последствия?

Хороший, наглядный примерчик не помешает.
Re: Событие асинхронно.
От: Аноним  
Дата: 25.10.08 13:39
Оценка: 18 (1) +1 :))
Здравствуйте, L0rdNet, Вы писали:

LN>Облазил весь форум, но все равно не могу понять, как правильно (корректно) вызвать события асинхронно.


LN>Обязательно вызывать EndInvoke?

LN>Если не буду вызывать EndInvoke, какие последствия?

Вас распнут

LN>Хороший, наглядный примерчик не помешает.


http://msdn.microsoft.com/en-us/library/2e08f6yc.aspx
Re: Событие асинхронно.
От: drol  
Дата: 25.10.08 19:55
Оценка:
Здравствуйте, L0rdNet, Вы писали:

LN>Обязательно вызывать EndInvoke?


MSDN гласит что обязательно.

LN>Если не буду вызывать EndInvoke, какие последствия?


Зависит от того чей EndInvoke() вызываете. Одни классы могут в нём ничего военного и не делать, а другие могут изменять внутреннее состояние, освобождать какие-нибудь ресурсы получаемые в BeginInvoke() и т.д.
Re: Событие асинхронно.
От: _d_m_  
Дата: 26.10.08 04:02
Оценка:
Здравствуйте, L0rdNet, Вы писали:

LN>Облазил весь форум, но все равно не могу понять, как правильно (корректно) вызвать события асинхронно.


LN>Обязательно вызывать EndInvoke?


Насколько я знаю, необязателен EndInvoke только для класса System.Windows.Forms.Control
Re: Событие асинхронно.
От: Spiceman  
Дата: 26.10.08 15:49
Оценка:
Здравствуйте, L0rdNet, Вы писали:

LN>Обязательно вызывать EndInvoke?


Надо просто понимать, зачем это надо, а обязательно или нет — решай сам.
Я сейчас понимаю так, что его надо вызывать, чтобы:
1. получить результат, если асинхронно вызваемый метод возвращает значение;
2. получить исключение, если в асинхронном методе произошло исключение.
Re[2]: Событие асинхронно.
От: _d_m_  
Дата: 26.10.08 22:34
Оценка: +1
Здравствуйте, Spiceman, Вы писали:

S>Здравствуйте, L0rdNet, Вы писали:


LN>>Обязательно вызывать EndInvoke?


S>Надо просто понимать, зачем это надо, а обязательно или нет — решай сам.


Не вызвать — и получить протечку.

S>Я сейчас понимаю так, что его надо вызывать, чтобы:

S>1. получить результат, если асинхронно вызваемый метод возвращает значение;
S>2. получить исключение, если в асинхронном методе произошло исключение.

Вызывать EndXxx надо обязательно. Джефри Рихтер: "При инициализации асинхронной операции CLR выделяет под нее внутренние ресурсы. Если EndXxx не вызвать, то эти ресурсы освободятся только при завершении процесса".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.