C#线程调度的一些问题.

huangxubang 2017-11-23 02:01:41
我希望实现这样的功能.
新建多个线程,线程的数量是不确定的。每个线程完成之后,要根据UI线程内的某个执行一些收尾工作。
不能用Thread.Join(), 因为会阻塞UI线程。
用事件AutoResetEvent或者EventWaitHandle的话,如果所有线程共用一个EventWaitHandle的话,会不会错乱。因为每个线程都要执行收尾工作的。如果线程A先完成了,设置事件的话,会不会导致线程B没有完成就执行收尾工作。那每个线程绑定一个EventWaitHandle,由于我线程的数量是不确定的,这个代码要如何写?线程方法又要如何写?
请指教?
Task不用,我用了某个COM组件,用Thread执行不会出错,用Task执行就会出现错误。这个要解决的难度好像更大。
...全文
166 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2017-11-23
  • 打赏
  • 举报
回复
要自由控制线程开始,以及运行状态等,lz研究下IAsyncResult https://www.cnblogs.com/08shiyan/archive/2010/11/12/1875397.html http://blog.csdn.net/neusoft06/article/details/8817719
guanyinsishengzi 2017-11-23
  • 打赏
  • 举报
回复
this.BeginInvoke就可以 要根据UI线程内的某个执行一些收尾工作但是收尾工作如果在UI线程上执行且执行时间很长的话肯定会阻塞UI线程,

110,525

社区成员

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

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

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