Есть ли способ отменить удаление из метода Dispose, другими словами НЕ УДАЛИТЬ A при вызове A.Dispose().Отменить dispose inside Dispose method
Обновление Я не очень хорошо объяснял, потому что я не мог придумать, как это сделать. У меня есть класс, который отображает индикатор выполнения (marquee) во всплывающем окне, которое выполняется в отдельном потоке. Когда прогресс всплывающее окно создается, контроллер, как одноразовый объект возвращается, так что мы можем сделать что-то вроде этого:
using (var progress = Dialogs.ShowProgress("Please wait..."))
{
// do lots of stuff here
progress.UpdateStatus("Please wait some more...");
// do more stuff
}
при использовании выходов блока, окно прогресса закрыт и разрушен.
Теперь у меня есть ситуации, когда в этом блоке происходят события, которые также создают окно прогресса, а вместо того, чтобы возвращать новый объект и создавать новое окно, я хотел вернуть объект, созданный первым экземпляром, и уничтожить его только один раз первый экземпляр располагает.
Update Хорошо, что я сделал, чтобы создать новый объект IDisposable с каждым Dialogs.ShowProgress()
вызова, а также прилагается исходный объект контроллера к нему. Эти объекты удаляются, когда они будут сделаны, и контроллер только удаляется, когда это единственный объект, оставшийся в распоряжении.
Почему в мире вы хотели бы сделать это? В основном вы спрашиваете: «У меня есть этот контракт, в котором говорится, что я должен делать X, но я не хочу ... как мне это избежать?» – JerKimball
Я чувствую здесь злоупотребление картой. Если для всей платформы .NET нет необходимости отменять вызов Dispose(), как вы думаете, вам действительно нужно? –
Вы вводите в заблуждение метод 'Dispose', который является соглашением (широко используемым в .NET Framework, но не языком, просто соглашением), с _finalizer_ (который имеет другой синтаксис) и _still_ вы можете ' t отменить финализатор (что не имеет смысла) ... путь к _ "cancel" _ 'Dispose' просто ... не вызывает' Dispose'. – Jcl