Tôi nghĩ rằng GC sẽ gọi Dispose cuối cùng nếu chương trình của bạn không nhưng bạn nên gọi Dispose() trong chương trình của bạn chỉ để làm cho xác định dọn dẹp.Bộ thu gom rác có gọi là Dispose() không?
Tuy nhiên, từ chương trình thử nghiệm nhỏ của tôi, tôi không nhìn thấy vứt nhận được gọi là gì cả ....
public class Test : IDisposable
{
static void Main(string[] args)
{
Test s = new Test();
s = null;
GC.Collect();
Console.ReadLine();
}
public Test()
{
Console.WriteLine("Constructor");
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
// Output chỉ là "Constructor", tôi không nhận được "Vứt" như tôi mong đợi. Chuyện gì thế?
EDIT: Có, tôi biết tôi nên gọi Dispose() - Tôi làm theo mẫu chuẩn khi sử dụng các đối tượng dùng một lần. Câu hỏi của tôi nảy sinh bởi vì tôi đang cố gắng theo dõi sự rò rỉ trong mã của ai đó, được quản lý bằng C++ (một lớp phức tạp khác có thể là chủ đề tốt của một chủ đề khác).
Câu hỏi này là bản sao của [http://stackoverflow.com/questions/45036/will-the-garbage-collector-call-idisposable-dispose-for -me] (http://stackoverflow.com/questions/45036/will-the-garbage-collector-call-idisposable-dispose-for-me). –