stackoverflow异常c#

时间:2016-04-02 00:08:31

标签: c# multithreading stack overflow

我在尝试此代码时遇到堆栈溢出异常:

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();
    }
}

我想知道如何清空此应用的物理内存 因为当我在taskmanager中检查我的应用程序时,我发现它增加了疯狂使用的内存。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果您只想检查进程是否正在运行,那么最好不断运行setNames(c(x,0L)[match(letters[1:7],names(x),nomatch=length(x)+1L)],letters[1:7]); ## a b c d e f g ## 0 0 0 1 0 2 3 循环。这样,您每次都不会增加调用堆栈。

while

这样,你只是做了一些事情是没有运行,否则只需等待几秒钟就会重启。