在.NET(而不是Windows窗体或控制台)下使用C#和WPF ,创建只能作为单个实例运行的应用程序的正确方法是什么?
我知道这与一些叫做互斥的神秘事物有关,我很少能找到一个不愿意停下来解释其中一个是什么的人.
代码还需要通知已经运行的实例用户尝试启动第二个,并且如果存在任何命令行参数,也可以传递.
在.NET中,防止应用程序的多个实例同时运行的最佳方法是什么?如果没有"最佳"技术,每种解决方案需要考虑哪些注意事项?
可能重复:
创建单实例应用程序的正确方法是什么?
如何强制C#.net应用程序在Windows中只运行一个实例?
为了只允许运行应用程序的单个实例,我正在使用互斥锁.代码如下.这是正确的方法吗?代码中是否有任何缺陷?
当用户第二次尝试打开应用程序时,如何显示已在运行的应用程序.目前(在下面的代码中),我只是显示另一个实例已在运行的消息.
static void Main(string[] args)
{
Mutex _mut = null;
try
{
_mut = Mutex.OpenExisting(AppDomain.CurrentDomain.FriendlyName);
}
catch
{
//handler to be written
}
if (_mut == null)
{
_mut = new Mutex(false, AppDomain.CurrentDomain.FriendlyName);
}
else
{
_mut.Close();
MessageBox.Show("Instance already running");
}
}
Run Code Online (Sandbox Code Playgroud) 我必须限制我的.net 4 WPF应用程序,以便每台计算机只能运行一次.请注意,我说每台机器,而不是每个会话.
到目前为止,我使用简单的互斥锁实现了单实例应用程序,但不幸的是,这样的互斥锁是每个会话.
有没有办法创建一个机器范围的互斥锁,还是有任何其他解决方案来实现每个机器应用程序的单个实例?
如何检测进程是否已在Windows任务管理器下运行?我也想获得内存和CPU使用率.