我在尝试此代码时遇到堆栈溢出异常:
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中检查我的应用程序时,我发现它增加了疯狂使用的内存。
答案 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
这样,你只是做了一些事情是没有运行,否则只需等待几秒钟就会重启。