以下のコードを見つけてください。このアプリケーションでは、アンマネージ コードは使用しませんでした。SerialPort を継続的に読み取り、データベースに保存する小さな Windows サービスです。しかし、メモリは指数関数的に増加し続け、アプリケーションは数日後にクラッシュします。これから私を助けてください。シリアルポートなしでアラームを動的に渡すと、消費されるのはわずか16Mb(安定)であると考えられますが、それはSerialPortクラスのせいだと思いますか?
private void comport_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
string alarm = _comport.ReadLine().Trim();
//process the alarm
}
catch (Exception ex)
{
UtilsLog.WriteToLogFile("comport_DataReceived " + ex.Message);
Console.WriteLine("comport_DataReceived " + ex.Message);
}
finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
}