C# 释放tabcontrol时取消所有活动的后台工作人员

C# 释放tabcontrol时取消所有活动的后台工作人员,c#,winforms,backgroundworker,tabcontrol,C#,Winforms,Backgroundworker,Tabcontrol,我正在处理一个包含多个子项目的大型winforms项目。 每次我选择一个新的菜单项,都会启动一个不同的子项目。每个项目都使用后台人员来更快地完成任务 我想要的是,如果通过菜单打开新项目,则取消项目中运行的所有活动后台工作人员 根据我到目前为止学到的知识,我必须为打开项目中的tabControl设置e.Cancel属性为true。我正在处理tabControl,但这不会中断当时运行的后台工作人员并取消它们。我不知道如何为这个tabControl设置e.Cancel属性值以及触发哪个事件,如果我确实

我正在处理一个包含多个子项目的大型winforms项目。 每次我选择一个新的菜单项,都会启动一个不同的子项目。每个项目都使用后台人员来更快地完成任务

我想要的是,如果通过菜单打开新项目,则取消项目中运行的所有活动后台工作人员

根据我到目前为止学到的知识,我必须为打开项目中的tabControl设置e.Cancel属性为true。我正在处理tabControl,但这不会中断当时运行的后台工作人员并取消它们。我不知道如何为这个tabControl设置e.Cancel属性值以及触发哪个事件,如果我确实应该这样做的话

任何帮助都将不胜感激


谢谢

取消是合作的,如果后台工作人员在执行其工作时没有检查取消标志,则不能取消。好的,假设后台工作人员检查取消标志…应该在哪里设置此标志?在哪里?…只要您有对BackgroundWorker的引用并可以调用其方法。我的意思是,我需要在释放tabcontrol时触发它。我在每个项目中都有不同数量的后台工作人员,并且必须编写一个通用方法,以便在处理相应项目的tabcontrol时将其全部取消。如何确保取消所有后台工作人员?如何创建这些新项目并将其添加到表单中?我的建议是你保留一份当前项目的参考资料,这样你就可以对其采取行动。然后将Cancel方法添加到项目中,以便可以调用它。该方法将取消其中的所有后台工作。如果这些项目都是不同类型的,那么让它们实现一个具有Cancel成员的接口。然后可以将当前项目强制转换为接口类型并调用其Cancel方法。