怎样关闭和释放System.Timers.Timer? 本帖最后由 jshzp 于 2012-07-30 19:40:47 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哪里调用的这个timer.Stop(); timer.Close(); 是不是不同线程造成的。下面的来自msdn在一个线程调用 Stop 方法或将 Enabled 属性设置为 false 的同时,可在另一个线程上运行事件处理方法。这可能导致在计时器停止之后引发 Elapsed 事件。Stop 方法的示例代码演示了一种避免此争用条件的方法。Timer.Stop 方法http://msdn.microsoft.com/zh-cn/library/system.timers.timer.stop(v=vs.80) 在controlBox上面放置了个button,鼠标点击button时,先timer.Stop(); timer.Close();再controlBox.Close(); 加个判断试一试 void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {if (this.Textbox1.InvokeRequired){ dm = Move; try { controlBox.Invoke(dm, new object[] { top });//跨线程移动窗体,引发了多个异常 timer.Enabled = true; } catch { }} } if(i>0){hehe} 谢谢,我实际写的是if (controlBox.InvokeRequired)这样避免了引发异常。但是关闭timer的问题还是没有解决啊。。MSDN大段的叙述,看着头晕,像是机器翻译的。 加了判断后的代码:if (controlBox.InvokeRequired) try { controlBox.Invoke(dm, new object[] { top });//跨线程移动窗体 } catch { } else controlBox.Top = top; 关闭Timer后,timer_Elapsed会再进很多次,还是只有一两次。只有一两次就没有问题了。可能是线程之间的同步问题。 事务修改底层(高手请进) 大家好,在的帮个忙,问个关于treeview的问题 C# 字符变量填入数组并显示在datagridview里 对C#和C++熟的请进(C#调用C++的DLL),小弟的问题困扰好久了。。。。。。。。 请问在.net remoting中如何从服务器端取得被客户端激活的对象的状态信息? 汽修管理系统应该怎么的去设计啊? 怎么样处理连接共享? 关于input(button)问题!!! 问一个关于TextBox的问题 几个问题的请教 (急)C#开多个线程完成同一任务 关于var与显式强类型,IEnumerable<T>与List<T>
timer.Close();
http://msdn.microsoft.com/zh-cn/library/system.timers.timer.stop(v=vs.80)
先timer.Stop();
timer.Close();
再controlBox.Close();
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (this.Textbox1.InvokeRequired)
{
dm = Move;
try
{
controlBox.Invoke(dm, new object[] { top });//跨线程移动窗体,引发了多个异常
timer.Enabled = true;
}
catch { }
}
}
{
hehe
}
但是关闭timer的问题还是没有解决啊。。
MSDN大段的叙述,看着头晕,像是机器翻译的。
try
{
controlBox.Invoke(dm, new object[] { top });//跨线程移动窗体
}
catch
{ }
else
controlBox.Top = top;