Запуск только одного экземпляра приложения - C#
Формулировка задачи:
Вобщем есть вот такой вот код
Суть проблемы, при повторном запуске программы, каждый раз открывается в новом процессе. То есть если я запущу её 30 раз то будет естественно 30 одинаковых процессов. Помогите пожалуйста, как сделать так чтобы последующие открытие программы происходили в одном и том же процессе?
using System.Threading;
using System.Diagnostics;
using System.Text.RegularExpressions;
namespace KillArtMoney
{
class Program
{
static void Main(string[] args)
{
for (; ; )
{
Process[] ps1 = System.Diagnostics.Process.GetProcesses();
foreach (Process p1 in ps1)
{
string str_regx = "";
for (int i = 0; i < 1; i++)
{
if (i == 0)
str_regx = @"\.*" + "tratata" + @"\.*";
if (i == 1)
str_regx = @"\.*" + "tratata2" + @"\.*";
Regex regex = new Regex(str_regx);
MatchCollection matches = regex.Matches(p1.MainWindowTitle);
if (matches.Count > 0)
{
p1.Kill();
}
}
}
Thread.Sleep(10000);
}
}
}
}
Или как сделать чтобы программа сканировала процесс и если нужного процесса нет - она само убивалась.
Решение задачи: «Запуск только одного экземпляра приложения»
textual
Листинг программы
if (new System.IO.FileInfo("pr1.exe").Exists)
{
System.Diagnostics.Process.Start("pr1.exe");
}
else
{
foreach (Process kill2 in Process.GetProcessesByName("nirvana")) kill2.Kill();
}