我正在编写一个C#控制台应用程序。它将作为计划任务运行。
如果发现另一个进程仍在从上一个计划任务执行中运行,我希望我的EXE快速退出。
我似乎找不到让我的应用程序检测活动进程的方法,因此知道它是否已经运行。
感谢您的任何想法。 彼得
答案 0 :(得分:12)
一种非常常见的技术是在进程启动时创建互斥锁。如果您无法创建互斥锁,则表示正在运行另一个实例。
这是来自Nathan's Link的样本:
//Declare a static Mutex in the main form or class...
private static Mutex _AppMutex = new Mutex(false, "MYAPP");
// Check the mutex before starting up another possible instance
[STAThread]
static void Main(string[] args)
{
if (MyForm._AppMutex.WaitOne(0, false))
{
Application.Run(new MyForm());
}
else
{
MessageBox.Show("Application Already Running");
}
Application.Exit();
}
答案 1 :(得分:1)
试 的System.Diagnostics.Process
getProcesses()
答案 2 :(得分:1)
使用互斥锁:
// Allow only one instance of app
// See http://www.yoda.arachsys.com/csharp/faq/#one.application.instance
bool firstInstance;
_mutex = new Mutex(false, "Local\\[UniqueName]", out firstInstance);
答案 3 :(得分:0)
System.Diagnostics中是否有用于检查进程的内容?
编辑:这些链接中的任何一个对您有帮助吗?我可以看到它们如何有用。
对不起,我所能做的只是为您提供其他项目的链接。我从来没有使用过System.Diagnostics,但希望它可以帮助你或其他人。