每隔n秒调用一次存储过程

edi*_*ode 2 .net c# sql multithreading timer

我没有多线程的经验,所以我想知道如何刷新我的数据网格视图,例如,两秒钟.

基本上,当用户在某个选项卡上,并且他们选择了"当前导入"时,它应该每隔n秒调用一个方法GetNotImportedFiles(),然后该方法调用SP并绑定DataSet.

显然,我需要一个计时器,它会每隔n秒执行一次,但是我需要它作为后台工作程序执行该方法,但是与UI线程通信以更新DataGridView.

如果您需要任何代码,请询问.

更新:我已经实现了一个计时器,但它似乎永远不会触及timerTick的方法?

在我的设计师中我有代码:

this.refreshTimer.Interval = 1000;
this.refreshTimer.Tick += new System.EventHandler(this.refreshTimer_Tick);
Run Code Online (Sandbox Code Playgroud)

我的理解是每1秒钟应该调用refreshTimer_Click.但是我在代码中有一个从未被命中的断点?

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);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Pra*_*ana 5

Mske使用:C#中的Timer,允许在每个计时器滴答后查询数据...您可以访问链接以获取有关计时器的更多详细信息.

Timer myTimer = new Timer(500);
timer1.Interval = 5000;
timer1.Enabled = true;
timer1.Tick += new System.EventHandler (OnTimerEvent);

Write the event handler

This event will be executed after every 5 secs.

public static void OnTimerEvent(object source, EventArgs e)
{
m_streamWriter.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());
m_streamWriter.Flush();
}
Run Code Online (Sandbox Code Playgroud)