在写一个小程序的时候碰到几个关于线程的问题,想了很久没弄明白。程序中需要一个后台线程一直运行监视,所以做一个子线程。子线程需要在主线程上实时显示监视情况,也就是实时向主线程的datagridview控件中添加数据并显示。此时使用线程时碰到几个问题。
1.ThreadStart委托的位置问题。为什么把ThreadStart委托的声明写在方法里面的时候可以使用方法名做参数,而写到方法外面的时候会报错。
2.线程的操作问题。子线程的Start()和其他方法必须在同一个方法内实现么?例如我想在一个button_click()中调用Thread.Start()而在另一个Button2_Click()中调用Thread.Abord(),这样就不行。为什么在其他方法内不能引用子线程实例?
3.线程的状态问题。为什么在调用Thread.Start()后,在主线程中调用子线程的ThreadStatics属性并显示在主线程的label中的时候,会显示unstarted?
4.主线程假死的问题。设置子线程IsBackground=True,子线程通过委托实时更新主线程的datagridview,为什么主线程还是会假死?
这几个问题困扰了我好久,哪位达人熟悉线程帮忙解释一下,不甚感激多线程WinForm
1.ThreadStart委托的位置问题。为什么把ThreadStart委托的声明写在方法里面的时候可以使用方法名做参数,而写到方法外面的时候会报错。
2.线程的操作问题。子线程的Start()和其他方法必须在同一个方法内实现么?例如我想在一个button_click()中调用Thread.Start()而在另一个Button2_Click()中调用Thread.Abord(),这样就不行。为什么在其他方法内不能引用子线程实例?
3.线程的状态问题。为什么在调用Thread.Start()后,在主线程中调用子线程的ThreadStatics属性并显示在主线程的label中的时候,会显示unstarted?
4.主线程假死的问题。设置子线程IsBackground=True,子线程通过委托实时更新主线程的datagridview,为什么主线程还是会假死?
这几个问题困扰了我好久,哪位达人熟悉线程帮忙解释一下,不甚感激多线程WinForm
解决方案 »
- System中不存在类型或者命名空间名称Linq(或缺少程序集引用)
- 提示: com.ExecuteNonQuery();语句执行有错 ‘into’附近有误
- TreeView中的滚动条的问题
- 程序运行一段时间就死机 【急】
- C#字符串中提取子字符串的问题?
- insert一條記錄後如何能得到他的正確自增id
- winform DataGridView中combox如何绑定表的列名
- 散分了
- C# 求个SQL语句实现2个时间内的查询
- 如何连到本机的SQL Server上:
- 用户在查看datagridview中的数据时,可以对datagridview中的数据进行删除和修改以及添加操作,等用户操作结束之后,如何保存呢?
- 求助C# web 防反编译
CurrentThread 说明这个线程已结束,
问题3 这是线程间通信的问题,你可以搜索一下相关方面的知识,学习一下问题4 可能的原因是你在启动一个子线程的时候,可能将当前的线程阻塞了。所以还会有假死的情况