怎么也搞不定窗体死机的问题,线程高手们,快来给小弟看看问题出在哪里啊,急啊!
日期:2007-10-24 荐:
怎么也搞不定窗体死机的问题,线程高手们,快来给小弟看看问题出在哪里啊,急啊!按照csdn上的例子,我写了下面的代码,但是运行线程的时候,窗体还是死了,直到UpdateProgress执行完后,看了关于线程的很多例子,应该是可以解决这个问题的啊,奇怪?gt;>?br>public class Form1 : System.Windows.Forms.Form{。。。。。。。。private void StopThread(){if (timerThread != null){timerThread.Interrupt();timerThread = null;}}public void ThreadProc() {try {MethodInvoker mi = new MethodInvoker(this.UpdateProgress);while (flag==1) {//在窗体上调用 BeginInvokethis.BeginInvoke(mi);flag=0;Thread.Sleep(500) ;}}//当该线程被主线程中断时引发 - 退出该循环catch (ThreadInterruptedException e) {if (e != null) {}}catch (Exception we) {if (we != null) {MessageBox.Show(we.ToString());}}}private void UpdateProgress() { /*对文件IO读,然后插入数据库代码*/ }private void button1_Click(object sender, System.EventArgs e){flag=1;StopThread();timerThread = new Thread(new ThreadStart(ThreadProc));timerThread.IsBackground = true;timerThread.Start();}。。。。。。。。}多个窗体死机的问题肯定是线程冲突觉得楼主的timerThread.Interrupt();这个地方有问题...似乎不应该这样写timerThread.Interrupt();不是关键,即使第一次运行的时候把StopThread()去掉,还是会死的不能吧、我这里好使其实你在 ThreadProc 里直接调用 UpdateProgress 窗口都可以拖动的我刚试验完。一切正常是不是你的计算机太慢,cpu 消耗光了
标签: