2009-04-22 7 views
0

Dans une classe statique, j'ai une méthode qui va éditer une variable. La classe est statique car la classe concerne le detaild du site et une seule instance est donc requise.Impossible de rendre un objet lock privé dans une classe statique - pourquoi?

Quoi qu'il en soit, la synchronisation des threads est requise. J'ai un objet lock, mais quand je le rends privé et dis lock (obj) {}, je reçois toutes sortes d'erreurs.

Pourquoi est-il impossible de rendre l'objet de verrouillage privé?

+0

Pouvez-vous certaines de vos informations d'erreur - je un objet de verrouillage privé dans une classe statique qui a été fonctionne très bien ... –

+1

Quelles erreurs avez-vous obtenir? Vous devez également rendre l'objet statique. – jfclavette

Répondre

3

Une pensée, initialisez-vous l'objet statiquement. Essayez déclarant:

private static object lockObject = new object(); 
+0

C'est pourquoi. Merci! – dotnetdev

+0

Il n'est pas nécessaire d'initialiser l'objet pour pouvoir le compiler ... Ça marche aussi sans. –

+0

@Mehrdad - Je ne sais pas ce que vous voulez dire, il va compiler mais il échouera à l'exécution avec une exception null ref, non? –

1

Cela devrait fonctionner. Le déclarez-vous private static?

private static readonly object lockObject = new object(); 

public static void Method() { 
    lock(lockObject) { 
     // ... 
    } 
} 
Questions connexes