Нужно ли нам вызывать EndInvoke() и закрывать дескриптор ожидания после вызова делегата BeginInvoke(), даже если нам не нужно ждать результата? Любая утечка ресурсов, если этого не сделать?
Нужна ли очистка для делегата BeginInvoke?
Ответы (1)
Да; вам всегда нужно вызывать EndInvoke()
.
В противном случае .Net будет хранить результат вечно, если вы в конечном итоге вызовете EndInvoke()
.
Если вам нужен асинхронный вызов по принципу «запустил и забыл» (или даже если вы этого не хотите), вам следует использовать класс Task
, который намного удобнее.
person
SLaks
schedule
23.09.2012
Нет класса Task в .NET 2.0/3.5
- person linquize; 23.09.2012