Vous pouvez utiliser mutex global.
Threading in C# a un bon exemple (copié ci-dessous pour plus de commodité) sur la façon d'utiliser mutex nommé pour enusure qu'une seule instance d'une application peut fonctionner sur une machine.
Vous pouvez développer cet exemple pour garantir qu'il n'y a qu'une seule instance d'un objet.
class OneAtATimePlease {
// Use a name unique to the application (eg include your company URL)
static Mutex mutex = new Mutex (false, "oreilly.com OneAtATimeDemo");
static void Main() {
// Wait 5 seconds if contended – in case another instance
// of the program is in the process of shutting down.
if (!mutex.WaitOne (TimeSpan.FromSeconds (5), false)) {
Console.WriteLine ("Another instance of the app is running. Bye!");
return;
}
try {
Console.WriteLine ("Running - press Enter to exit");
Console.ReadLine();
}
finally { mutex.ReleaseMutex(); }
}
}
Il y a encore une chose à laquelle vous devez faire attention.
Lorsque en utilisant mutex nommé sur un serveur qui exécute dans les services terminaux, un mutex nommé peut avoir deux niveaux de visibilité, mondiale à toutes les sessions (nom préfixé avec « Global\
») ou local à la session du serveur terminal (nom préfixé par "Local\
", ce sera par défaut si aucun préfixe n'est spécifié).
Vous pouvez trouver plus de détails sur Mutex dans MSDN: Mutex Class.
Cela devrait être fait via WCF, et non Remoting. Remoting a été déprécié en faveur de WCF. –
@John, Merci, je l'avoue Je ne suis pas aussi familier avec les détails de WCF que je devrais être ... où j'ai travaillé, je suis juste en mesure d'utiliser CLR 3.x ou WCF stuff .. en savoir plus sur maintenant –
Avec les exigences telles que données, je ne pense pas que ce soit faisable via WCF. .NET Remoting s'assurera que l'identité de l'objet est préservée à tout moment, contrairement à WCF. En outre, la "dépréciation" de Remoting devrait être prise avec un grain de sel - c'est simplement une technologie très différente de la WCF dans ses principes de conception, et en tant que tel, il y a des situations où l'un ou l'autre fait simplement mieux. –