有没有人能告诉我,这个线程错误需要怎么改

wwei69 2004-12-01 10:17:42
我在一个winform里有一个侦听线程,在这个线程得到数据时,把值传给一个label里,这个label有一个textchang事件,在textchang事件里,执行一个过程。但是,在这个程执行的时候,就有问题了,侦听被停止,这个过程也没有全执行完。
希望大家能帮我看看这个问题怎么解决?
先谢谢了,最好谁有代码能给我一份。
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwei69 2004-12-01
  • 打赏
  • 举报
回复
wangsaokui(无间道III(终极无间)) 能说的详细一些吗,或者给些代码行吗
wangsaokui 2004-12-01
  • 打赏
  • 举报
回复
线程得到数据后用异步委托
wwei69 2004-12-01
  • 打赏
  • 举报
回复
希望大家帮我想想怎么办呀
lgg06 2004-12-01
  • 打赏
  • 举报
回复
up
evaELLIS 2004-12-01
  • 打赏
  • 举报
回复
你在其他线程调用UI控件肯定会出错啊

使用多线程使软件界面具有较好的响应性
http://dev.csdn.net/article/18/18280.shtm
jxzhang615 2004-12-01
  • 打赏
  • 举报
回复
帮顶!
wwei69 2004-12-01
  • 打赏
  • 举报
回复
问题解决了,加了一个Timer控制,谢谢各位,帮我顶,但是没有好的意见
xiaoslong 2004-12-01
  • 打赏
  • 举报
回复
帮你顶
jimh 2004-12-01
  • 打赏
  • 举报
回复
精彩
liulxmooo 2004-12-01
  • 打赏
  • 举报
回复
// 这是由UI线程定义的Label控件
private Label lblStatus;
....
// 以下方法不在UI线程上执行
private void RunsOnWorkerThread() {
DoSomethingSlow();
// Do UI update on UI thread
object[] pList = { this, System.EventArgs.Empty };
lblStatus.BeginInvoke(
new System.EventHandler(UpdateUI), pList);
}
....


// 切换回UI线程执行的入口
private void UpdateUI(object o, System.EventArgs e) {
//现在没问题了,使用Invoke使得线程总是回到UI线程,所以我们可以放心大胆地调用控件的成员了
lblStatus.Text = "Finished!";
}

BeginInvoke,是Invoke的异步版本(Invoke是同步完成的),不过不要和System.Windows.Forms.MethodInvoker委托中的BeginInvoke混淆,两者都是利用不同线程来完成工作,但是控件的BeginInvoke方法总是使用UI线程,而其他的异步委托调用方法则是利用线程池里的线程。同步方法可能出现这样一种死锁情况:工作者线程通过Invoke同步调用UI线程里的方法时会阻塞,而万一UI线程正在等待工作者线程做某件事时怎么办?因此,能够使用异步方法时应尽量使用异步方法。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧