是否有可能杀死BackgroundWorker的线程?

6 .net multithreading backgroundworker

是否有可能"杀死"一个线程BackgroundWorker

在我的DoWork事件中,我无法检查取消标志,因为我有一个阻止调用外部COM接口或查询数据库.CancelAsync不会取消对COM的调用.

我该怎么办呢?任何建议将非常感谢.

提前致谢.

And*_*ewS 1

我不知道中止线程的安全方法。

后台工作人员可以检查它是否应该取消并自行取消,但如果它停止查询数据库,那么在它返回之前您无能为力。

您可以在 ThreadPool 线程上工作,如果不再需要,只需放弃该线程并启动另一个线程(确保当它从数据库查询返回时,它会在执行任何令人讨厌的操作之前检查是否应该取消)。当然,您需要平衡性能并管理线程同步。如果您沿着这条路走下去,您可以查看 Interlocked 静态类以实现高效的关键部分锁定。