Thay vì một lớp tĩnh, bạn nên sử dụng một lớp bình thường với mẫu đơn (có nghĩa là, bạn giữ một cá thể duy nhất của lớp, có lẽ được tham chiếu bởi một thuộc tính tĩnh trên chính lớp đó). Sau đó, bạn có thể có một destructor, hoặc thậm chí tốt hơn, một sự kết hợp của destructor và phương pháp Dispose.
Ví dụ, nếu bây giờ bạn có:
static class MyClass
{
public static void MyMethod() {...}
}
//Using the class:
MyClass.MyMethod();
bạn sẽ phải thay:
class MyClass : IDisposable
{
public static MyClass()
{
Instance=new MyClass();
}
public static MyClass Instance {get; private set;}
public void MyMethod() {...}
public void Dispose()
{
//...
}
~MyClass()
{
//Your destructor goes here
}
}
//Using the class:
MyClass.Instance.MyMethod();
(Chú ý các trường hợp được tạo ra trong constructor tĩnh, mà được gọi lần đầu tiên bất kỳ thành viên tĩnh lớp nào được tham chiếu)
Cảm ơn bạn. Tôi cũng đã thêm vào mã của tôi một hàm tạo riêng không tĩnh để lớp không thể được khởi tạo ở nơi khác. –
Nếu luồng sẽ được sử dụng, cần phải làm cho chuỗi an toàn. –
Có một hướng dẫn tốt ở đây về tất cả các cách khác nhau để làm Mẫu Singleton với an toàn chỉ. http://csharpindepth.com/Articles/General/Singleton.aspx – Naz