【发布时间】:2012-08-15 14:59:09
【问题描述】:
我编写了一个应用程序,每 10 秒通过 FTP 下载文件,我有以下计时器代码。
timer3.Tick += new EventHandler(updateLogs);
timer3.Interval = (1000) * (10);
timer3.Enabled = true;
timer3.Start();
我的 updateLogs 函数:
timer3.Enabled = false;
server1_log = downloadLog("192.168.0.217", 1);
server2_log = downloadLog("192.168.0.216", 2);
server3_log = downloadLog("192.168.0.215", 3);
timer3.Enabled = true;
我意识到请求可能需要超过 10 秒的时间,这就是为什么我在调用 downloadLog() 之前禁用计时器并在之后启用计时器。
不过,大约一分钟后,应用程序冻结,CPU 使用率跃升至 45+ %。当我注释掉timer3的代码时,应用程序可以正常运行很长时间,并且从不崩溃。
有什么想法吗?
【问题讨论】:
-
你的 timer3 是类成员还是局部变量?
-
也许问题不在于计时器,而在于
downloadLog()? -
你使用的Timer类属于哪个命名空间?
-
命名空间 WindowsFormsApplication1。 timer3是类构造函数中初始化的类变量。
-
@Krzysiek 我认为 Nikola 想知道您使用的是哪个 Timer Class。