【发布时间】:2011-12-12 10:17:19
【问题描述】:
我对多线程没有太多经验,所以我想知道如何每两秒刷新一次我的数据网格视图。
基本上,当用户在某个选项卡上,并且他们选择了“当前导入”时,它应该每隔 n 秒调用一次 GetNotImportedFiles() 方法,然后该方法调用 SP 并绑定 DataSet。
显然,我需要一个计时器,它每 n 秒执行一次,但我需要它作为后台工作人员执行该方法,但需要与 UI 线程通信以更新 DataGridView。
如果您需要任何代码,请询问。
更新:我已经实现了一个计时器,但它似乎从来没有达到 timerTick 的方法?
在我的设计器中,我有代码:
this.refreshTimer.Interval = 1000;
this.refreshTimer.Tick += new System.EventHandler(this.refreshTimer_Tick);
我的理解是 refreshTimer_Click 应该每 1 秒调用一次。但是我在代码中有一个永远不会被命中的断点?
private void refreshTimer_Tick(object sender, EventArgs e)
{
if (searchComboBox.Text.Equals("Currently Importing"))
{
try
{
DataSet temp = EngineBllUtility.GetNotImportedFiles(connectionString);
if (temp != null)
importFileGridView.DataSource = temp.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
【问题讨论】:
-
为什么不创建一个每次进度发生变化时都会发起的事件?
-
SP 是指存储过程吗?您可能应该在某个地方澄清一下(至少在标题中)
-
@bojanskr 因为进度会很快发生变化,因为网络用户可以通过网络同时运行许多导入。
-
Eurgh,没有将其设置为启用。对不起各位
标签: c# .net sql multithreading timer