Jaecko
25.03.2010, 10:23
Moin.
Welche Möglichkeiten gibts denn in C# (Visual Studio 2008), den mehrfachen Programmstart zu unterbinden, AUCH wenn die .exe-Dateien unterschiedlich heissen?
(Weil z.B. die auszuwertende Hardware nur mit 1 Instanz kommunizieren kann und ein weiterer Programmstart Chaos verursacht.)
Das erste Problem hab ich mit einem Mutex gelöst. Funktioniert auch, wenn die jeweilige .exe mit gleichem Namen an anderen Orten liegt bzw. wenn die gleiche .exe mehrfach gestartet wird.
Code direkt im Load-Event des Main-Forms:
// firstInstance: global bool variable
System.Threading.Mutex mutex = new System.Threading.Mutex(false, @"Local\MyAppName", out firstInstance);
if (!firstInstance)
{
System.Diagnostics.Process.GetCurrentProcess().Kil l();
}
Sobald aber eine der .exe umbenannt wird, wars das und das Programm startet 2x.
Hat da jemand noch nen Trick?
mfG
Welche Möglichkeiten gibts denn in C# (Visual Studio 2008), den mehrfachen Programmstart zu unterbinden, AUCH wenn die .exe-Dateien unterschiedlich heissen?
(Weil z.B. die auszuwertende Hardware nur mit 1 Instanz kommunizieren kann und ein weiterer Programmstart Chaos verursacht.)
Das erste Problem hab ich mit einem Mutex gelöst. Funktioniert auch, wenn die jeweilige .exe mit gleichem Namen an anderen Orten liegt bzw. wenn die gleiche .exe mehrfach gestartet wird.
Code direkt im Load-Event des Main-Forms:
// firstInstance: global bool variable
System.Threading.Mutex mutex = new System.Threading.Mutex(false, @"Local\MyAppName", out firstInstance);
if (!firstInstance)
{
System.Diagnostics.Process.GetCurrentProcess().Kil l();
}
Sobald aber eine der .exe umbenannt wird, wars das und das Programm startet 2x.
Hat da jemand noch nen Trick?
mfG