Hallo zusammen
Ich habe in meiner Anwendung die ich geschrieben habe diese Code in App.Xaml.cs hinzugefügt um ihn nur einmal Starten lassen leider Erfolglos.
habt Ihr eine andere Lösung o. was mache ich hier Falsch?
Danke für die Antworten
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using System.Threading;
using System.Windows;
namespace TimeRecorderPro
{
/// <summary>
/// Interaktionslogik für "App.xaml"
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
//Mutex mit eindeutigem Namen (bspw. GUID)
Mutex mutex = new Mutex(true, "77aca664-ba25-4964-bc05-d7ba57030720");
//Prüfung, ob Mutex schon länger aktiv ist..
if (mutex.WaitOne(TimeSpan.Zero, true))
{
//Mutex ist gerade gestartet..
base.OnStartup(e);
}
else
{
//Mutex läuft bereits längere Zeit..
MessageBox.Show("Anwendung läuft bereits!");
//Anwendung beenden
Environment.Exit(0);
}
}
}
}
Ja, Deine Mutex implementierung ist falsch; siehst auch in Mutex Doku.
Alternativ korrekte Implementierung hier: Single Instance Application mit WPF und C#
ist auch super einfach über die Forensuche zu finden.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
danke dir
in Mutex Doku sind Stellen wie :
Console.WriteLine("{0} has released the mutex",
Thread.CurrentThread.Name);
wie kann ich in einer Anwendung , der in WPF läuft Console.WriteLine reinbringen?
Die Doku zeigt das Beispielhafte verhalten.
Du bist nicht gezwungen in die Konsole zu schreiben, wenn Du das in einer WPF Anwendung nicht kannst.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code