Привет всем.
Помогите разобраться чего происходит.
using(IDisposable obj = new AnyDispClass())
{
CallAsyncOperation(obj);
}
Поидее этот код должен работать так:
1. оздается обект
2. вызывается асинхронная операция (чегото делается долго в другом потоке)
3. (сразу после вызова асинхронной операции) Выходим из блока using и вызывается obj.Dispose();
Соответсвенно логически предположить что код внутри асинхронной операции должен матюкнуться при обращении к obj.
Странно.. но он не "матерится". Даже если я сделаю задержку в 1 минуту в коде и напишу GC.Collect() после блока using.
---
Вот сразу напрашивается вопрос когда же вызывается obj.Dispose()? Потому что кажется что он не вызывается (покрайней мере там где я этого ожидаю)... Как это работает?
Спасибо.