Dispose メソッド内から Dispose をキャンセルできる方法はありますか。つまり、A.Dispose() が呼び出されたときに A を破棄しないでください。
更新 うまく説明できませんでした。私が持っているのは、別のスレッドで実行されるポップアップ ウィンドウにプログレス バー (マーキー) を表示するクラスです。プログレス ポップアップが作成されると、コントローラーのような使い捨てオブジェクトが返されるため、次のようなことができます。
using (var progress = Dialogs.ShowProgress("Please wait..."))
{
// do lots of stuff here
progress.UpdateStatus("Please wait some more...");
// do more stuff
}
using ブロックが終了すると、進行状況ウィンドウが閉じられ、破棄されます。
現在、このブロック内で発生することが進行状況ウィンドウも作成する状況があり、新しいオブジェクトを返して新しいウィンドウを作成する代わりに、最初のインスタンスによって作成されたオブジェクトを返し、最初のインスタンスが破棄されたときにのみ破棄したかった.
更新Dialogs.ShowProgress()
OK、私がしたことは、呼び出し
ごとに新しい IDisposable オブジェクトを作成し、元のコントローラー オブジェクトをそれにアタッチすることでした。これらのオブジェクトは、処理が完了するたびに破棄されます。コントローラーは、破棄するオブジェクトが残っている場合にのみ破棄されます。