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

时间:2014-02-27 22:37:23

标签: c# wpf

我正在尝试计算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; 
    }
}

1 个答案:

答案 0 :(得分:0)

如果你真的想要计算单独的实例(可能是并发运行),你应该启动一个线程来检查循环中的进程列表并修改你的计数器以反映当前的计数。

示例:

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

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

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