我有一个表单(Form1),并且此表单有一个System.Timers.Timer
对象。我希望使表单无效(基本上这是我的目标,无效(致电Invalidate()
)表单每隔一段时间,其中超时期间每次触发事件时都会更改)。但是,由于事件处理程序方法是静态的,我无法访问我的表单实例。计时器事件处理程序的更新表单
如何将一些对象传递给我的事件处理程序?
我有一个表单(Form1),并且此表单有一个System.Timers.Timer
对象。我希望使表单无效(基本上这是我的目标,无效(致电Invalidate()
)表单每隔一段时间,其中超时期间每次触发事件时都会更改)。但是,由于事件处理程序方法是静态的,我无法访问我的表单实例。计时器事件处理程序的更新表单
如何将一些对象传递给我的事件处理程序?
这是非常简单的开始,计时器的WinForms是,这意味着你可以拖放一个计时器到窗体的组件。使用属性网格来启用时间并设置计时器间隔。更改属性网格以显示事件并双击tick事件。将为您创建一个新的事件处理程序。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
Invalidate();
}
}
我很确定你可以使用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());
}
嗨!把你的草案代码放在这里。 – 2011-12-30 13:37:12
那么,只是不要让它成为一个静态的方法。使其成为窗体的实例方法,以便您可以使用* this *。 Timer类不会介意。 – 2011-12-30 13:44:03