【发布时间】:2014-10-02 03:21:43
【问题描述】:
我正在开发一个网络应用程序。首先,我想让 DataGridView 每秒刷新一次数据。我的实现:
public partial class Form1 : Form
{
BindingList<Wifi> Networks = new BindingList<Wifi>();
System.Timers.Timer NetworksRefreshThread;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
NetshScanner netshScanner = new NetshScanner();
NetworksRefreshThread = new System.Timers.Timer(1000);
dataGridView1.DataSource = Networks;
NetworksRefreshThread.Elapsed += delegate
{
BindingList<Wifi> tmp = new BindingList<Wifi>(netshScanner.StartAndParseOutput());
this.Invoke((MethodInvoker)delegate
{
Networks.Clear();
foreach (Wifi net in tmp)
{
Networks.Add(net);
}
});
};
}
关闭表单后,我在 this.Invoke 中得到 ObjectDisposedException。有什么建议吗?
【问题讨论】:
-
关闭表单时是否停止运行计时器?
-
我在 Form1_FormClosing 事件中添加了 NetworksRefreshThread.Close() 但仍然相同。我要补充一点,这个异常并不总是出现。
标签: c# multithreading exception timer task