gpt4 book ai didi

c# - 计时器占用内存(每秒3MB)

转载 作者:行者123 更新时间:2023-12-03 13:21:20 27 4
gpt4 key购买 nike

我有用C#编写的应用程序,它使用很少的计时器(4个计时器)。应用程序按相关的时间间隔从Web服务请求响应。如果互联网已连接,则应用程序使用12-15 Mb的内存,但是当互联网断开连接时,应用程序会增加内存使用率(每秒3MB)。

我强制运行垃圾收集器,但没有任何改善。
当Internet断开连接时,会发生一些异常(exception),但所有异常(exception)都得到了妥善处理。

如果互联网断开连接,这是我代码的一部分,并且当调用shn.show * Details()方法会增加内存使用率GetXML.GetResponce()会在参数传递程序上调用webservice并以字符串形式返回回复xml,ParseXML类在返回的xml respnce解析之上并将其转换为对象

class Scheduler
{
private System.Windows.Forms.Timer dataTimer;
private System.Windows.Forms.Timer promoTimer;
private showNotifications shn;
public Scheduler()
{

dataTimer = new System.Windows.Forms.Timer();
promoTimer = new System.Windows.Forms.Timer();
shn = new showNotifications();
}

public void scheduleDmsg(int time)
{
if (time < 1)
{ time = 5; }
dataTimer.Interval = time * 60000;
dataTimer.Tick += new EventHandler(InitDmsg);
dataTimer.Enabled = true;
}

public void schedulePmsg(int time)
{
if (time < 1)
{ time = 5; }
promoTimer.Interval = time * 60000;
promoTimer.Tick += new EventHandler(InitPmsg);
promoTimer.Enabled = true;
}

private void InitDmsg(Object source, EventArgs e)
{
try
{
//--------------------at the start of app------------------
showNotifications shn = new showNotifications();
HandleUserData hud = new HandleUserData();
Userinfo uin = hud.ReadUserData();

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.InnerXml = GetXML.GetResponse(new Uri("auth service url"));// this web service use to authenticate user by ip address
Auth authDetails = ParseXML.ParseAuth(xmlDoc);

try
{
if (authDetails.SUB.Equals("no_entry")) // if authenicated no_entry become >> <11 digit number>
{ }
else
{
//if authenticated
xmlDoc.InnerXml = GetXML.GetResponse(new Uri("info url"));
Pre preDetails = ParseXML.ParsePre(xmlDoc);

switch (preDetails.SUB_TYPE)
{
case "1":
shn.showPreDetails(); //showPreDetails method display some information on cusom notification message
break;
case "2":
shn.showPostDetails();//showPostDetails method display some information on cusom notification message
break;
case "3":
shn.showPreDetails();
break;
case "4":
shn.showPreDetails();
break;
case "5":
shn.showPostDetails();

break;
default:
break;

}

}
}
catch (Exception ex)
{
//MessageBox.Show("Error Occured");
}
}
catch (Exception ex)
{

}



}
private void InitPmsg(Object source, EventArgs e)
{
//shn.showPromoMsgs();
showNotifications.showPromoMsgs(); ////showPromoDetails method display some information on cusom notification message
}
}

最佳答案

我每分钟都有一个Windows服务连接到Tibco,在队列中监听消息,此连接从未正确关闭,因此您为打开的每个连接继续使用更多的内存。您必须强制断开连接。

尝试对以下对象HandleUserData,Userinfo,Pre和Auth实现部署。

在方法InitDmsg中使用完这些对象后,调用dispose处理这些对象。

关于c# - 计时器占用内存(每秒3MB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8951389/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com