如何检查UserControl是否正在运行?

时间:2018-02-27 09:50:29

标签: c# wpf

我有一个UserControl可以通过MainButton应用程序打开。另一个UserControl这个App应用中提供了相同的second,只显示UserControl的窗口。现在我需要知道这个控件是否已经从MainApplication启动,如果是,那么我需要阻止启动second应用。

我实际上尝试了两种“解决方案”:

1。使用流程

 Process current = Process.GetCurrentProcess();

 foreach (Process p in Process.GetProcessesByName(current.ProcessName))
 {
     if (p.Id != current.Id)
     {
       break;
     }
 }

此代码检查Process是否已在执行中。该解决方案不起作用,因为当我从UserControl应用启动Main,然后运行second应用时,我有两个UserControl实例。

2。使用Mutex

 bool createdNew;

 _mutex = new Mutex(true, "UserControlName", out createdNew);

 if (!createdNew)
 {
    //Check for other instance
    Process current = Process.GetCurrentProcess();

    foreach (Process p in Process.GetProcessesByName(current.ProcessName))
    {
       if (p.Id != current.Id)
       {
          break;
       }
    }

    return true;
 }
 else
 {
     _mutex?.Close();
     return false;
 }

此解决方案只有在我从UserControl应用中运行Main时才有效,特别是如果我从{{1}运行此代码,则无法再显示UserControl app,然后我得到了second的两个实例。

我该如何处理?

更新

我发布的所有代码都添加到了UserControl构造函数中,如果你想测试一下,你只需要将代码粘贴到构造函数中,就是这样。

0 个答案:

没有答案