日期:2014-05-19  浏览次数:20941 次

如何讓我長時間執行的過程在中間可以用命令讓它停止執行它。
其實隻要讓我的窗口在程序運行時是可操作的就可以了。
除了委托的辦法,沒有其它的辦法嗎?

------解决方案--------------------
事件
循环中加判断~
------解决方案--------------------
在你的循环中加上 Application.DoEvents(); 这句
------解决方案--------------------
这种情况就应该用线程了,一个线程处理你的函数,你就可以动UI了。
ThreadStart s= new ThreadStart(select2);
t= new Thread(s);
t.IsBackground = true;
t.Start();

至于暂停,可以类似:
private void BtnSuspend_Click(object sender, System.EventArgs e)
{
if ((t.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0)
{
BtnSuspend.Text = "暂停中…… ";
BtnSuspend.Enabled = false;
button1.Text = " 继 续 ";
t.Suspend();
}


}

------解决方案--------------------
同意楼上看法。应该用单独的线程处理UI,单独线程处理任务,主线程负责调度。UI收到信息,则发动事件,主线程捕捉事件,启动其他线程处理。
------解决方案--------------------
是的,用Thread线程操作,或者用异步方法调用BeginXXX,EndXXX
------解决方案--------------------
把程序操作弄为线程操作
LZ可以看下以下的参考,我写线程时候就是用这方法

http://msdn2.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker(VS.80).aspx
------解决方案--------------------
使用多线程吧

.Net 2.0 的C# , 有个backgroundWorker对象,可以比较方便的实现工作线程,没接触过多线程的可以从它入手慢慢学习。