This commit is contained in:
Anton Volkov
2019-03-19 15:41:41 +03:00
parent 98f4985f06
commit 2afc189307
+8 -23
View File
@@ -1,45 +1,30 @@
using System; using JiraTimeBot.UI;
using System.Diagnostics; using System;
using System.Threading;
using System.Windows.Forms; using System.Windows.Forms;
using JiraTimeBot.UI;
namespace JiraTimeBot namespace JiraTimeBot
{ {
static class Program static class Program
{ {
private static Mutex _mutex = new Mutex(true, "{44426B3E-B901-4792-ACEA-1385D79DBAD1}");
/// <summary> /// <summary>
/// The main entry point for the application. /// The main entry point for the application.
/// </summary> /// </summary>
[STAThread] [STAThread]
static void Main() static void Main()
{ {
if (PriorProcess() != null) if (_mutex.WaitOne(TimeSpan.Zero, true))
{ {
MessageBox.Show("Another instance of the app is already running.");
return;
}
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain()); Application.Run(new frmMain());
_mutex.ReleaseMutex();
} }
else
public static Process PriorProcess()
// Returns a System.Diagnostics.Process pointing to
// a pre-existing process with the same name as the
// current one, if any; or null if the current process
// is unique.
{ {
Process curr = Process.GetCurrentProcess(); MessageBox.Show("Another instance of the app is already running.");
Process[] procs = Process.GetProcessesByName(curr.ProcessName);
foreach (Process p in procs)
{
if ((p.Id != curr.Id) &&
(p.MainModule.FileName == curr.MainModule.FileName))
return p;
} }
return null;
} }
} }
} }