计算器异常 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)
{
}
}
这样,你只是在做一些事情是进程 不是 运行,否则只需等待几秒钟,循环就会重新启动。
我在尝试此代码时收到 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)
{
}
}
这样,你只是在做一些事情是进程 不是 运行,否则只需等待几秒钟,循环就会重新启动。