Au lieu d'une classe statique, vous devriez utiliser une classe normale avec le modèle singleton (c'est-à-dire, vous gardez une seule instance de la classe, peut-être référencée par une propriété statique sur la classe elle-même). Ensuite, vous pouvez avoir un destructeur, ou mieux, une combinaison de destructeur et Dispose méthode.
Par exemple, si vous avez maintenant:
static class MyClass
{
public static void MyMethod() {...}
}
//Using the class:
MyClass.MyMethod();
vous auriez à la place:
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();
(Remarquez comment l'instance est créée dans le constructeur statique, qui est invoqué pour la première fois l'un des membres statiques de la classe est référencé)
Merci. J'ai également ajouté à mon code un constructeur privé non statique afin que la classe ne puisse pas être instanciée ailleurs. –
Si le thread doit être utilisé, vous devez rendre le code thread-safe. –
Il y a un bon guide ici sur toutes les différentes façons de faire le motif Singleton avec la sécurité du fil. http://csharpindepth.com/Articles/General/Singleton.aspx – Naz