如何防止c#中无限while循环中的内存泄漏



我正在开发一个应用程序插件。应用程序在加载时调用插件,插件的开始和结束形式如下:

const int sleepTime = 60 * 1000;
while (true)
{
try
{
Thread.Sleep(sleepTime);
//vaProxy.WriteToLog("Invoking checker...", "Green");

Dictionary<string, dynamic> SessionState = vaProxy.SessionState;
Dictionary<string, CallBack> callBacks = vaProxy.SessionState["CallBacks"];
//Checks will only occur in the Pit
if (!Config.IsProcessRunning("Falcon BMS")) continue;
var isJoystickProfileLoaded = vaProxy.GetBoolean("isJoystickProfileLoaded");
bool isProfileLoaded = isJoystickProfileLoaded == true;
if (ConfigFile.IsTrue(vaProxy, "EnableJoystickLoaded") &&
!vaProxy.SessionState["JanJanJoystickIsLoaded"] && !isProfileLoaded)
{
Config.SaySomething("Verify Joystick profile is loaded");
}
if (!SharedMem.GetStatus("isFlying")) continue;
if (ConfigFile.GetEntry(vaProxy, "AutoAVTR") == "True" &&
!SharedMem.GetStatus("isOnGround"))
{
//Check AVTR status
if (!SharedMem.GetStatus("AVTR"))
{
callBacks["SimAVTRSwitchOn"]
.Press(vaProxy, sayWhat: "Start recording", waitAfter: 500);
}
}
if (SessionState.ContainsKey("JanJanIsAutoSave") && !SharedMem.GetStatus("isOnGround"))
{
if (vaProxy.SessionState["JanJanIsAutoSave"])
{
//vaProxy.WriteToLog("Checking save time", "Green");
//save game...
GameIO.SaveGame(vaProxy);
}
}

if (!SessionState.ContainsKey("JanJanIsStatusReport")) continue;
if (vaProxy.SessionState["JanJanIsStatusReport"])
{
Sim.MyStatus(vaProxy);
}
}
catch (Exception ex)
{
vaProxy.WriteToLog("Dynamic Checksn" + ex.Message, "Red");
Console.Beep();
}
}

vaProxy是由发送应用控制的动态变量。

我怀疑这个无限循环导致内存泄漏。我该如何预防呢?我应该使用using()语句,如果是,如何使用?我可以转换成"做一些事情"去上课,会有帮助吗?

我正在调用一个不是由他创建的函数,它没有正确地处理自己。把它放在using(){...}块中解决了这个问题。

相关内容

  • 没有找到相关文章

最新更新