加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用不同的输入重新启动线程

发布时间:2020-12-16 01:41:36 所属栏目:百科 来源:网络整理
导读:首先 – 如果之前已经提出此问题或类似问题,请致歉.感觉应该是这样,但我一直都找不到. 我有一个带有我正在调用的方法的第三方程序集,此方法具有参数列表(在概念上,而不是List object)并在可能长时间运行的算法之后返回结果. 我在不同的线程上调用此方法以保
首先 – 如果之前已经提出此问题或类似问题,请致歉.感觉应该是这样,但我一直都找不到.

我有一个带有我正在调用的方法的第三方程序集,此方法具有参数列表(在概念上,而不是List< object>)并在可能长时间运行的算法之后返回结果.

我在不同的线程上调用此方法以保持UI响应.并且它会定期调用并使用不同的值列表.这意味着当我想重新运行它时它经常运行.我遇到的问题是新线程的创建非常幼稚,因此每次都会触发一个新线程 – 这会导致多个线程运行不同的输入参数.我实际想要发生的是任何现有的线程都会因为我不再对它们的输出感兴趣而死掉.

我对多线程最佳实践不是很熟悉所以我真的想要一些关于解决这个问题的最佳方法的建议.

(我使用3.5所以没有TPL)

编辑
我破解了Reflector,看看里面发生了什么,很多代码都被标记为受保护,所以我非常肯定我可以继续并在支票中包装调用,以便按照下面的答案提前退出.

解决方法

您可以将其视为生产者/消费者模式.

而不是启动一个Thread,发布(生成)一个新的Datapacket.

消费线程应该监视队列并在新数据包到达时开始.

请注意,停止线程是您的主要问题.甚至不看Thread.Abort().您需要将该逻辑构建到线程代码中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读