堆栈溢出信息

 

正确的代码如下:
        private void SetDate()
        {


                try
                {
                    #region cpu载荷
                    SqlDataReader SqlReader = PCTK.DBUtility.DbHelperSql.ExecuteReader("SELECT     Caption, IP_Address, CPULoad, PercentMemoryUsed, ResponseTime FROM  Nodes WHERE     (Comments = '服务器') AND (ObjectSubType = 'SNMP') AND (NodeID IN  " +
    " (SELECT     NodeID  FROM          APM_Application)) ");

                    if (ServerList == null)
                    {
                        ServerList = new List<ModelSever>();
                    }
                    ServerList.Clear();
                    if (SqlReader != null)
                    {
                        while (SqlReader.Read())
                        {
                            PCTK.ModelSever ms = new ModelSever();

                            ms.ResponseTime = double.Parse(SqlReader["ResponseTime"].ToString());
                            if (ms.ResponseTime < 0)
                            {
                                ms.ResponseTime = 0;
                            }


                            ms.CPULoad = double.Parse(SqlReader["CPULoad"].ToString());
                            if (ms.CPULoad < 0)
                            {
                                ms.CPULoad = 0;
                            }
                            ms.PercentMemoryUsed = double.Parse(SqlReader["PercentMemoryUsed"].ToString());
                            if (ms.PercentMemoryUsed < 0)
                            {
                                ms.PercentMemoryUsed = 0;
                            }
                            ms.IPAddress = SqlReader["IP_Address"].ToString();
                            ms.Caption = SqlReader["Caption"].ToString();
                            ServerList.Add(ms);
                        }

                    }
                    SqlReader.Close();
                    SqlReader.Dispose();

                    #endregion

                    #region 饼图
                    SqlDataReader SReader = PCTK.DBUtility.DbHelperSql.ExecuteReader("select * from  APM_Application_Sort_Count_V ");

                    if (Pie == null)
                    {
                        Pie = new List<double>();
                    }
                    if (SReader != null)
                    {
                        Pie.Clear();
                        Pie.Add(0.0);
                        Pie.Add(0.0);
                        Pie.Add(0.0);
                        while (SReader.Read())
                        {
                            double p;
                            if (SReader["LB"].ToString() == "正常")
                            {
                                p = double.Parse(SReader["SL"].ToString());
                                Pie[0] = p;
                            }
                            if (SReader["LB"].ToString() == "预警")
                            {
                                p = double.Parse(SReader["SL"].ToString());
                                Pie[1] = p;
                            }
                            if (SReader["LB"].ToString() == "告警")
                            {
                                p = double.Parse(SReader["SL"].ToString());
                                Pie[2] = p;
                            }
                        }

                    }
                    SReader.Dispose();
                    SReader.Close();

                    #endregion

                    #region  告警详细

                    SqlDataReader SqlReaderMessage = PCTK.DBUtility.DbHelperSql.ExecuteReader("SELECT       EventTime,   Message FROM    Events WHERE     (EventType >= 500) AND (EventType <= 505) AND (CONVERT(varchar, EventTime, 112) = CONVERT(varchar, GETDATE(), 112)) ORDER BY EventTime DESC");

                    if (EventInfo == null)
                    {
                        EventInfo = new List<ModelEvent>();
                    }
                    EventInfo.Clear();
                    if (SqlReaderMessage != null)
                    {
                        while (SqlReaderMessage.Read())
                        {
                            ModelEvent Me = new ModelEvent();
                            Me.DateTime = SqlReaderMessage["EventTime"].ToString();
                            Me.Message = SqlReaderMessage["Message"].ToString();

                            EventInfo.Add(Me);


                        }

                    }
                    SqlReaderMessage.Close();
                    SqlReaderMessage.Dispose();
                    #endregion

                    #region  可用性
                    if (AvailabilityList == null)
                    {
                        AvailabilityList = new List<ModelAvailability>();
                    }

                    SqlDataReader SqlReaderAvai = PCTK.DBUtility.DbHelperSql.ExecuteReader("SELECT       CONVERT(varchar(10), b.DateTime, 120) AS Time, a.Name, a.ShortName, a.Type, b.PercentAvailability FROM   (SELECT     ID, Name, ShortName, Type " +
    " FROM   APM_Application WHERE      (ZhanShi IS NULL)) AS a INNER JOIN (SELECT     ApplicationID, DateTime, PercentAvailability FROM  APM_DailyApplicationAvailability   " +
    " WHERE      (CONVERT(varchar, DateTime, 112) = CONVERT(varchar, GETDATE(), 112))) AS b ON a.ID = b.ApplicationID ");


                    AvailabilityList.Clear();
                    if (SqlReaderAvai != null)
                    {
                        while (SqlReaderAvai.Read())
                        {
                            ModelAvailability MA = new ModelAvailability();
                            MA.XTMC = SqlReaderAvai["Name"].ToString();
                            MA.PercentAvailability = SqlReaderAvai["PercentAvailability"].ToString();
                            AvailabilityList.Add(MA);
                        }

                    }
                    SqlReaderAvai.Close();
                    SqlReaderAvai.Dispose();

                    #endregion

                }
                catch (Exception ex)
                {

                }
                finally
                {
                    if (IsClose == false)
                    {
                        GC.Collect();
                        GC.WaitForPendingFinalizers();
                        Thread.Sleep(5000);
                        SetDate();

                    }
                    else
                    {
                        thread1.Abort();
                    }
                }

        }

 

上面的代码执行数小时后报出如下错误:

 

 

 

 

如何解决?试了几种方法都无济于事。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微恒软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值