How to check if a WPF application is working?

Possible duplicate:
What is the correct way to create one instance of the application?

How to check if my application is open? If my application is already running, I want to show it instead of opening a new instance.

+7
source share
4 answers
[DllImport("user32.dll")] private static extern Boolean ShowWindow(IntPtr hWnd, Int32 nCmdShow); static void Main() { Process currentProcess = Process.GetCurrentProcess(); var runningProcess = (from process in Process.GetProcesses() where process.Id != currentProcess.Id && process.ProcessName.Equals( currentProcess.ProcessName, StringComparison.Ordinal) select process).FirstOrDefault(); if (runningProcess != null) { ShowWindow(runningProcess.MainWindowHandle, SW_SHOWMAXIMIZED); return; } } 

Method 2

 static void Main() { string procName = Process.GetCurrentProcess().ProcessName; // get the list of all processes by the "procName" Process[] processes=Process.GetProcessesByName(procName); if (processes.Length > 1) { MessageBox.Show(procName + " already running"); return; } else { // Application.Run(...); } } 
+13
source
 public partial class App { private const string Guid = "250C5597-BA73-40DF-B2CF-DD644F044834"; static readonly Mutex Mutex = new Mutex(true, "{" + Guid + "}"); public App() { if (!Mutex.WaitOne(TimeSpan.Zero, true)) { //already an instance running Application.Current.Shutdown(); } else { //no instance running } } } 
+2
source

Here is one line code that will do this for you ...

  if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1) { // Show your error message } 
+1
source

Do it:

  using System.Threading; protected override void OnStartup(StartupEventArgs e) { bool result; Mutex oMutex = new Mutex(true, "Global\\" + "YourAppName", out result); if (!result) { MessageBox.Show("Already running.", "Startup Warning"); Application.Current.Shutdown(); } base.OnStartup(e); } 
-one
source

All Articles