Нужна ли очистка для делегата BeginInvoke?

Нужно ли нам вызывать EndInvoke() и закрывать дескриптор ожидания после вызова делегата BeginInvoke(), даже если нам не нужно ждать результата? Любая утечка ресурсов, если этого не сделать?


person linquize    schedule 23.09.2012    source источник


Ответы (1)


Да; вам всегда нужно вызывать EndInvoke().
В противном случае .Net будет хранить результат вечно, если вы в конечном итоге вызовете EndInvoke().

Если вам нужен асинхронный вызов по принципу «запустил и забыл» (или даже если вы этого не хотите), вам следует использовать класс Task, который намного удобнее.

person SLaks    schedule 23.09.2012
comment
Нет класса Task в .NET 2.0/3.5 - person linquize; 23.09.2012