N'appler une method qu'une seule fois

Signaler
Messages postés
148
Date d'inscription
mercredi 20 février 2002
Statut
Membre
Dernière intervention
5 juin 2007
-
Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
-
Salut les csharpers

Je veux créer une methode privée A() qui sera appelée dans mes méthode publiques. Mais je veux que celle ci ne soit executee qu'une seule fois quelque soit le nombre d'appels (2,100,3000...).

J'etais persuadé que ca faisait en ecrivant
private static void A()
mais en testant j'ai bien vu que ca ne marchait pas.
Donc quelqu'un peut il me dire la synthaxe a ecrire!!

Merci bcp

4 réponses

Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
5
Le principe utiliser en general est :

private bool m_Initialised = false;

private void A ()
{
   if (m_Initialised) return;
   m_Initialised = true;
   ...
}

public void B ()
{
   A();
...
}
public void C ()
{
   A();
...
}


A++

:-p Crazyht :)
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]
Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
5
Voir meme :

private void A ()
{
lock (m_Initialised) {
if (m_Initialised) return;
m_Initialised = true;
}
...
}

pour les problemes de threads

A++

:-p Crazyht :)
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]
Messages postés
148
Date d'inscription
mercredi 20 février 2002
Statut
Membre
Dernière intervention
5 juin 2007

A bon obligé de passer par un booléen
J'etais persuadé qu'il y avait un truc tout fait.
ba merci bcp
Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
5
Meme Ms utilise cette technique (CF. Reflector sur les DLL du framework)

A++

:-p Crazyht :)
MVP Visual C#.NET

[Admin Codes-Sources]
[Membre Developer-Association]