日期:2014-05-17  浏览次数:21080 次

C#的Windows窗体应用程序中,如何实现停止按钮功能?
有一个“开始”按钮,点击之后执行的事件是:不停的扫描数据库中表的变化,然后做相应的操作(用定时器实现)。

问题是,我想在点击“停止”按钮以后,立即结束这个过程。怎么写??



我试过的方法:定义一个全局变量a,“停止”按钮里让全局变量变为false,在定时器执行前先判断a的值,然后做相应的操作。这样做出现了一个问题,如果在执行相应操作过程中点击了“停止”按钮,程序会出现卡死现象。。我分析原因可能是程序是由于同步执行的,会等到当前操作完成后再执行停止。。。


求大虾告知解决方法

------解决方案--------------------
线程或者增加变量,比如

while(!stop)
{
...dosomething
application.doevent();//给cpu时间相应其他操作
}

停止 stop = true;
------解决方案--------------------
用线程去执行时时扫描数据库,当你结束的时候,将线程释放就行!
------解决方案--------------------
探讨
引用:
线程或者增加变量,比如

while(!stop)
{
...dosomething
application.doevent();//给cpu时间相应其他操作
}

停止 stop = true;


这样做和在dosomething 之前增加一个判断全局变量有什么区别吗?只不过你的是在后面,我的在前面。

------解决方案--------------------
可能可以用委托,
窗体加载的时候,来注册委托,

在单击开始事件的时候,触发委托,执行委托所注册的方法
,在方法里判断委托是否为Null,不为Null执行下去

在单击停止的时候,对委托进行干扰 t.my_delegate = null;也就是赋空