【发布时间】:2014-09-29 09:38:08
【问题描述】:
我有 wpf 应用程序,我们称之为A-app。 A-app 与后台工作人员一起运行异步 B-method。 B-method 位于不同的项目中,它为 B-method init 部分创建了几个线程。
用户可以要求运行B-method,也可以要求取消运行并重新启动。
问题是,如果它在初始化时被取消,运行B-method 的后台工作程序将被取消,但线程不会。
重新启动会创建更多的线程,这些线程不能与之前运行的线程同时工作,并且会产生一些错误。
Threads 方法主要是在等待。
如何停止B-method 并取消它创建的线程?
不同的 AppDomain 是否有任何帮助? (而不是关闭整个应用程序域?)如果是,那应该怎么做? 有没有更好的办法?
更多详情:
- B 方法在某些设备(可能很多)上运行测试。该方法的初始化是连接到设备 - i/o - 所以大部分时间都花在等待上(这就是我们决定使连接初始化并行的原因)。从 2 个不同线程连接到同一设备可能会导致问题.
【问题讨论】:
-
是的,AppDomain 可能是最好的。如何卸载已被多次询问(请参阅此处右侧的列)
-
AppDomain 和线程的概念是正交的。卸载 AppDomain 不是取消工作人员的好方法。
标签: c# multithreading asynchronous appdomain