从计时器事件处理程序更新表单

时间:2011-12-30 13:34:37

标签: c# .net winforms timer

我有一个表单(Form1),这个表单有一个System.Timers.Timer对象。我想使表单无效(基本上这是我的目标,无效(调用Invalidate())表单每隔一段时间,其中每次触发事件时超时周期都会改变)。但是,由于事件处理程序方法是静态的,我无法访问我的表单实例。

如何将一些对象传递给我的事件处理程序?

2 个答案:

答案 0 :(得分:1)

我很确定你可以使用MS TPL。从here

开始
Task formManager;
 private void FormManagerUpdateUI()
        {
            // ... UI update work here ... 
        }

        private void StartFormManager()
        {
            formManager = Task.Factory.StartNew(() => { /* You validation code goes here */ }, TaskCreationOptions.LongRunning);
            formManager.ContinueWith((t) => { FormManagerUpdateUI(); }, TaskScheduler.FromCurrentSynchronizationContext());
        }

答案 1 :(得分:1)

这非常简单,winforms计时器是一个组件,这意味着您可以将计时器拖放到表单上。使用属性网格启用时间并设置计时器间隔。更改属性网格以显示事件,然后双击tick事件。将为您创建一个新的事件处理程序。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        Invalidate();
    }
}