【发布时间】:2012-05-02 20:14:28
【问题描述】:
我有一个关于下载文件的 try-catch 语句。下载文件后,我启用其中一个菜单项,然后关闭计时器设置以在一分钟内重试下载。
我的问题是,由于某种原因,我的trafficManagementToolStripMenuItem.Enabled = true; 行正在激活 catch 语句,即使菜单项正在启用。该文件正确下载,当我注释掉该行时,它可以完美运行。但是每次我运行它时,我都会收到“错误”消息框,并且即使在下载完成后菜单项正确启用,计时器也没有被禁用。
有什么想法吗?
try
{
////downloads Data
string address = "http://website.file.txt";
string filename = "vsd.txt";
WebClient client = new WebClient();
client.DownloadFile(address, filename);
trafficManagementToolStripMenuItem.Enabled = true;
timer1.Enabled = false;
}
catch
{
timer1.Enabled = true;
MessageBox.Show("error", "test");
}
【问题讨论】:
-
这段代码是否在主 GUI 线程以外的线程上运行?
-
或许先看看异常是什么?
-
是的,它在后台。奇怪的是,它第二次运行(在定时器重新启动后)却完美运行
-
“跨线程操作无效:控件''从创建它的线程以外的线程访问。”
-
好的,是的,我知道问题出在哪里,但我很难理解调用的东西