6 .net multithreading backgroundworker
是否有可能"杀死"一个线程BackgroundWorker?
在我的DoWork事件中,我无法检查取消标志,因为我有一个阻止调用外部COM接口或查询数据库.CancelAsync不会取消对COM的调用.
我该怎么办呢?任何建议将非常感谢.
提前致谢.
我不知道中止线程的安全方法。
后台工作人员可以检查它是否应该取消并自行取消,但如果它停止查询数据库,那么在它返回之前您无能为力。
您可以在 ThreadPool 线程上工作,如果不再需要,只需放弃该线程并启动另一个线程(确保当它从数据库查询返回时,它会在执行任何令人讨厌的操作之前检查是否应该取消)。当然,您需要平衡性能并管理线程同步。如果您沿着这条路走下去,您可以查看 Interlocked 静态类以实现高效的关键部分锁定。