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

线程结束
怎么在线程结束的时候给textbox赋值,我的界面是这样的。是多个线程,这里我只写了一个。线程指向的方法写在一个类里面。     
 if (!thread.IsAlive) 
            {
                this.Invoke((EventHandler)(delegate//timer控件启动线程
                {
                    textBox3.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                }));
            }

------解决方案--------------------
可以考虑用微软推荐的异步编程模型,那种方式来写,比较方便
在回调函数被调用时就可以刷新界面了,这时候数据也取下来了
------解决方案--------------------
线程函数中最后面写上你的那个invoke不就行了?
------解决方案--------------------
这样难道不行?
------解决方案--------------------
用 BackgroundWorker这个吧,比较容易操作。
完成后有个事件RunWorkerCompleted 。这把代码写这就行了。
------解决方案--------------------
参考这个:http://bbs.csdn.net/topics/390162519
------解决方案--------------------
有两种方法:
一是把 TextBox 传到线程中去,然后用 TextBox.Invoke 显示时间
二是把没信号的 AutoResetEvent 传到线程中去,然后用 AutoResetEvent.Set() 设为有信号,在主窗体判断是 if(AutoResetEvent.WaitOne(0)) { 显示时间,删除 AutoResetEvent}
------解决方案--------------------

------解决方案--------------------
引用:
我是要在所有的线程关闭之后获取当前时间赋值,就是看不到效果。

Invoke就是看不到效果吧,beginInvoke呢?
------解决方案--------------------
贴代码吧。。。
------解决方案--------------------