0

以下のコードを見つけてください。このアプリケーションでは、アンマネージ コードは使用しませんでした。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();
        }
    }
4

0 に答える 0