Có cách nào để "tự động" chạy mã kết thúc/phá hủy ngay sau khi biến mất phạm vi trong ngôn ngữ .Net? Nó xuất hiện với tôi rằng kể từ khi thu gom rác chạy ở một thời điểm không xác định, mã destructor không chạy ngay khi biến mất phạm vi. Tôi nhận ra tôi có thể kế thừa từ IDisposable và rõ ràng gọi Dispose trên đối tượng của tôi, nhưng tôi đã hy vọng rằng có thể có một giải pháp tay-off, tương tự như cách non -.Net C++ xử lý sự phá hủy đối tượng.Có thể chạy mã khi một đối tượng nằm ngoài phạm vi trong .Net không?
hành vi mong muốn (C#):
public class A {
~A { [some code I would like to run] }
}
public void SomeFreeFunction() {
SomeFreeSubFunction();
// At this point, I would like my destructor code to have already run.
}
public void SomeFreeSubFunction() {
A myA = new A();
}
Ít mong muốn:
public class A : IDisposable {
[ destructor code, Dispose method, etc. etc.]
}
public void SomeFreeFunction() {
SomeFreeSubFunction();
}
public void SomeFreeSubFunction() {
A myA = new A();
try {
...
}
finally {
myA.Dispose();
}
}
(+1) Cần lưu ý rằng "sử dụng" là viết tắt để sử dụng phương pháp Vứt bỏ và đặc biệt không sử dụng trình phá hủy và loại bỏ đối tượng khỏi bộ nhớ. –