rus*_*sky -3 c# exception invoke
我有这个问题...
有什么好的解决方案?
private void button1_Click(object sender, EventArgs e)
{
aTimer.Enabled = true;
button1.Enabled = false;
}
private void button2_Click(object sender, EventArgs e)
{
aTimer.Enabled = false;
}
private void timer_is_working(object source, ElapsedEventArgs e)
{
aTimer.Enabled = false;
button1.Enabled = true;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!此致Daniel Ruescher
因此,您没有说清楚,但是根据ElapsedEventArgs类型,似乎timer_is_working是实例的Elapsed事件System.Timers.Timer。
请注意,.NET Framework类库包括四个名为Timer的类,每个类提供不同的功能:
- System.Timers.Timer:定期触发一个事件。该类旨在在多线程环境中用作基于服务器或服务的组件。
- System.Threading.Timer:定期在线程池线程上执行单个回调方法。回调方法是在实例化计时器且无法更改时定义的。与System.Timers.Timer类类似,该类旨在用作多线程环境中的基于服务器或服务的组件。
- System.Windows.Forms.Timer:一个Windows Forms组件,该组件定期触发事件。该组件设计用于单线程环境。
- System.Web.UI.Timer:一个ASP.NET组件,该组件定期执行异步或同步网页回发。
如果这是Windows.Forms应用程序,请System.Windows.Forms.Timer改用(在“工具箱/组件”中找到它)。它的Tick事件在UI线程中引发,因此可以从那里访问您的控件。
如果您出于特殊原因需要使用System.Timers.Timer(例如,精度),则必须将访问权限包装到Invoke呼叫中:
Invoke(new Action(() => { button1.Enabled = true; }));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1433 次 |
| 最近记录: |