User1454 Ответов: 4

Как проверить, работает ли exe-файл в командной строке на языке C#


Привет,
Мне нужен фрагмент кода, который проверяет, работает ли один или несколько экземпляров exe или нет. Если это так, то он не должен позволять бежать. Если я запускаю свое приложение напрямую, оно выдает мне соответствующее сообщение, но в то время как если я запускаю свою командную строку, это не так. Как остановить его, если он работает в командной строке. Пожалуйста помочь.

Что я уже пробовал:

if (System.Diagnostics.Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetEntryAssembly().Location)).Count() > 1)
                {
                   Console.WriteLine("App is already running on this computer. Only one instance of App can run at a time");
                    return;
                }

4 Ответов

Рейтинг:
2
Рейтинг:
2

OriginalGriff

Попробовать это:

Process thisProcess = Process.GetCurrentProcess();
if (Process.GetProcessesByName(thisProcess.ProcessName).Count() > 1)
    {
    Console.WriteLine("Allready running");
    }


Рейтинг:
0

Jochen Arndt

Это часто задаваемый вопрос:

Как предотвратить многократный запуск приложения?

Есть несколько возможных ответов, но самый лучший-это:

Используйте мьютекс.

Примеры можно найти, выполнив поиск в интернете, например
C# Developing.net - как предотвратить открытие нескольких экземпляров приложения[^]
Непонятый Мьютекс[^]

Вы также можете прочитать эту тему SO, потому что в ней также обсуждается, должно ли приложение быть единым для всех пользователей или только активным.
c# - используется ли мьютекс для предотвращения безопасного запуска нескольких экземпляров одной и той же программы? - переполнение стека[^]