【问题标题】:Calling a Stored Procedure every n seconds每 n 秒调用一次存储过程
【发布时间】: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


【解决方案1】:

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

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();
}

【讨论】:

  • 请记住,.NET Framework 中有不同的 Timer 类。 System.Windows.Forms.Timer 是用于 WinForm 应用程序的控件,不会在单独的线程中运行,因此如果操作需要一些时间,则会阻塞 UI 线程。 System.Threading.Timer 用于多线程操作。
【解决方案2】:

使用Timer 每 n 秒启动一次操作,BackgroundWorker 用于对 SP 的异步调用。仅使用 Timer 控件不会创建后台线程操作。这就是 BackgroundWorker 的用武之地。它允许非常轻松地访问后台线程,而无需复杂的同步。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多