我用 C# 开发了一个应用程序。有什么方法可以让用户在任务管理器中杀死我的应用程序的进程,然后应用程序将自动重新启动
问问题
2766 次
2 回答
5
如果用户杀死了您的进程 - 差不多就是这样。你不会得到任何事件,什么都没有。
您需要做的是运行第二个进程来监视第一个进程,偶尔轮询正在运行的进程列表并在第一个进程停止时重新启动它。或者,您可以让他们使用 IPC 进行偶尔的心跳以避免查看整个进程列表。
当然,如果用户首先终止了监视进程,那么除非两个进程相互监视并启动缺少的进程,否则您将无法真正到达任何地方,但是现在您只是在绕圈子。
一般来说,虽然这是一个坏主意。如果用户想停止你的进程,你应该让他们。你为什么要阻止他们?
于 2013-04-30T10:10:48.490 回答
3
我看到的唯一解决方案是另一个监视主进程并重新启动它的进程。我会在主要进程中使用互斥锁,并在监视进程中监视该互斥锁。Released Mutex 表示主进程已停止。
/// <summary>
/// Main Program.
/// </summary>
class Program
{
static void Main(string[] args)
{
// Create a Mutex which so the watcher Process
using (var StartStopHandle = new Mutex(true, "MyApplication.exe"))
{
// Start the Watch process here.
Process.Start("MyWatchApplication.exe");
// Your Program Code...
}
}
}
在监视过程中:
/// <summary>
/// Watching Process to restart the application.
/// </summary>
class Programm
{
static void Main(string[] args)
{
// Create a Mutex which so the watcher Process
using (var StartStopHandle = new Mutex(true, "MyApplication.exe"))
{
// Try to get Mutex ownership.
if (StartStopHandle.WaitOne())
{
// Start the Watch process here
Process.Start("MyApplication.exe");
// Quit after starting the Application.
}
}
}
}
于 2013-04-30T10:15:48.607 回答