I'm writing a program which connect SQL Server and getting value every x second. I'm using Timers.Timer
for this job. However, I notice that in the task manager, it is slowly eating up more memory as time goes by. I've research about Threading.Timer
, thread Ttmeout, thread lock and etc. but I can not find the problem in my code.
class Program
{
static System.Timers.Timer DiskControlTimer
= new System.Timers.Timer(100) { AutoReset = true };
static void Main(string[] args)
{
DiskControlTimer.Elapsed +=
new System.Timers.ElapsedEventHandler(MailServiceControlTimerMethod);
GC.KeepAlive(DiskControlTimer);
DiskControlTimer.Start();
Console.ReadKey();
}
static void MailServiceControlTimerMethod(object sender,
System.Timers.ElapsedEventArgs e)
{
Test();
}
static void Test()
{
try
{
using (var conn = new SqlConnection("Data Source=.;" +
"Initial Catalog=DATABASE;Persist Security Info=True;" +
"User ID=sa;Password=ABCABC"))
using (var cmd = new SqlCommand("SELECT * FROM VERSION", conn))
{
conn.Open();
string Response = cmd.ExecuteScalar().ToString();
if (Response != "")
Console.Write("Success");
else
Console.Write("Failed");
}
}
catch (Exception ex)
{
Console.Write(ex.Message.ToString());
}
}
}
I'm pretty sure the leak is either coming from my timer function. Anyone have any ideas?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…