繁体   English   中英

计算C#WPF表单应用程序的实例数

[英]Count number of instances of C# WPF form application

我试图计算C#WPF默认公共部分类(即Mainwindow类)的实例数。 我尝试使用静态变量来获取计数,但是每次调用该类的实例时,静态变量的计数也会被初始化。 以下是我的代码:-

public partial class MainWindow : Window
{
    private static int instances;
    string[] word = { "PRMTCMOU", "POLATP", "RMHTOEBDAOR", "EMSOU", "DEKBYRAO",                              "CEOSPSRO", "YREOMM", "LAERWINEA", "TSRMOFCOI", "TROMINO" };
    int i = 1;
    bool checkStrings = false;
    int score = 0;
    private Socket tcpsocket;
    TcpClient tcpClient;

    public MainWindow()
    {
        instances++;
        InitializeComponent();
        this.Loaded += MainWindow_loaded;
        this.Closed += MainWindow_Closed;
        this.Closing += MainWindow_Closing; 
    }
}

如果您确实要对单独的实例进行计数(大概是同时运行),则应该启动一个线程,该线程在循环中检查进程列表并修改计数器以反映当前计数。

例:

void CheckProcessThread()
{
   while (checkProcesses)
   {
      counter = System.Diagnostics.Process.GetProcessesByName("MyProc").Length;
      Thread.Sleep(1000);
   }
}

请注意,我使用“ checkProcesses”变量,因此当您希望程序退出时,可以干净地关闭线程。 另外,此函数调用会占用大量的cpu时间,因此您可能需要增加thread.sleep来降低CPU使用率。

您也可以在计时器(而不是循环线程)上调用此函数。 也有其他方法,但是基本思想是您需要检查定期发生的其他过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM