如何实现伴随窗体的建立运行一个程序,窗体结束程序也跟着结束

yilaozhuang 2010-01-29 11:18:22
我要实现下面的功能:运行一个程序——出现主界面,后台自动去读串口数据(当然串口可能没有数据,然后等待,不停的读),现在自动读写串口没有问题,不知道怎么把这个后台程序跟主界面联系起来,请高手指点一下。
由于读串口的操作是不停进行的,只要主窗体不销毁就一直读,这里我用while(条件),但是不知道这个条件该怎么判断。
我尝试了在主窗体load事件中调用写好的读写串口程序——结果主窗体都出不来了。
...全文
91 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞天赤狐 2010-01-29
  • 打赏
  • 举报
回复
你在load中读数据,结果造成了阻塞,
起一个线程来读数据,这样界面就不会被假死,
然后在线程中刷新显示,
在窗口的Close 事件中结束此线程就好了
BBG_0622 2010-01-29
  • 打赏
  • 举报
回复
怎么也没人答复啊!
sisen 2010-01-29
  • 打赏
  • 举报
回复
通过线程进行。。。
cykevin 2010-01-29
  • 打赏
  • 举报
回复
load是处于界面线程中的,
在界面线程中执行一个循环,你这个循环不停止,界面就不会被绘出来,所以你要在界面上另开一个线程来执行这个读串口的操作。
Form_load
{
Thread thread=new Thread(读串口的函数);
thread.start();
}
条件你可以直接用true。
因为这个线程是在主窗体上生成的,主窗体关闭,这个线程就自动销毁。
yilaozhuang 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 huwei001982 的回复:]
设置一个属性就可以了

C# codeThread thread=new Thread(读串口的函数);
thread.IsBackground=true;//就是这个属性thread.start();
[/Quote]
试了一下,果然这样,这就省了再去用窗体.closed里面用abort函数了。谢谢啊,给加分
huwei001982 2010-01-29
  • 打赏
  • 举报
回复
设置一个属性就可以了

Thread thread=new Thread(读串口的函数);
thread.IsBackground = true; //就是这个属性
thread.start();
yilaozhuang 2010-01-29
  • 打赏
  • 举报
回复
我又在窗体关闭里面加了线程结束才把那个线程结束了:
private void meter_FormClosed(object sender, FormClosedEventArgs e)
{
Thread_RW_sp.Abort();
}
yilaozhuang 2010-01-29
  • 打赏
  • 举报
回复
感谢各位的回答,我用线程试了一下,可以;但是,我按F5运行之后,关了窗体,感觉那个线程还在运行啊
anyway_w 2010-01-29
  • 打赏
  • 举报
回复
线程

111,119

社区成员

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

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

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