计算器异常 c#

stackoverflow exception c#

我在尝试此代码时收到 Whosebug 异常:

Thread Tcheck= new Thread(checkbr);
Tcheck.Start();

private void checkbr() 
{
    try
    {
        var RunningProcessPaths = ProcessFileNameFinderClass.GetAllRunningProcessFilePaths();
        if (RunningProcessPaths.Contains("chrome.exe"))
        {
            checkbr();
        }
        else
        {
            System.Threading.Thread.Sleep(500);
            // TO START NEW INSTANCE OF APP
            System.Diagnostics.Process.Start(Application.ExecutablePath);
            Thread.Sleep(500);
            Process.GetCurrentProcess().Kill();
        }
    }
    catch (Exception)
    {
        checkbr();
    }
}

我想知道如何清空这个应用的物理内存 因为当我在任务管理器中检查我的应用程序时,我发现它正在疯狂地增加使用的内存。

我不是 C# 专家,但似乎方法 checkbr() 会在 chrome 为 运行 的情况下递归调用自身。
这肯定会导致堆栈溢出。

如果您只想检查进程是否 运行,您最好让 while 不断循环 运行。这样你就不会每次都增加调用堆栈。

private void checkbr() 
{
    try
    {
        while (true) 
        {
            var RunningProcessPaths = ProcessFileNameFinderClass.GetAllRunningProcessFilePaths();
            if (RunningProcessPaths.Contains("chrome.exe"))
            {   
                Thread.Sleep(5000);
            }
            else
            {             
                System.Threading.Thread.Sleep(500);
                // TO START NEW INSTANCE OF APP
                System.Diagnostics.Process.Start(Application.ExecutablePath);
                Thread.Sleep(500);
                Process.GetCurrentProcess().Kill();
            }
        }            
    }
    catch (Exception)
    {
    }
}

这样,你只是在做一些事情是进程 不是 运行,否则只需等待几秒钟,循环就会重新启动。