我经常在我的 GUI 代码中写这样的东西:
private void SecondTimer_Elapsed(object sender, ElapsedEventArgs e)
{
if (progressBar1.InvokeRequired)
{
progressBar1.BeginInvoke(new ElapsedEventHandler(SecondTimer_Elapsed), new[] {sender, e});
return;
}
//Code goes here
}
当然,如果应用程序是多线程的,这是必要的,因为我们需要编组最初创建控件的线程。问题是,编写委托并将参数放入数组中可能很乏味,并且在每个此类事件处理程序的顶部占用空间。是否有属性或类似的东西可以为您替换此代码?基本上是一个标签,上面写着“如果您在错误的线程上,请在 GUI 线程上使用相同的参数再次给我打电话。”