我想将它用于一个项目,我遇到了麻烦。 我有一个Windows窗体,我在其中启动了两个线程,然后关闭表单,线程继续他们的工作。如何在第二个线程停止时中止第一个线程?
我做了第一个线程IsBackground,但是第二个线程不是程序的唯一线程,第一个线程是在另一个线程(窗体)中启动的,它已经关闭而不再存在,此外我无法设置Flag的一个不存在的类。 我该怎么办?为解决此问题,我希望您的电子邮件发送我的litle项目。 感谢
答案 0 :(得分:1)
如果您使用的是.NET 4.0,我建议让后台工作为Task
对象,并使用CancellationToken
取消操作。
如果您尚未使用.NET 4.0,则可以使用也支持取消的BackgroundWorker
对象。
答案 1 :(得分:0)
你说你可以设置一个不存在的标志或类,但我会在某处创建一个标志。如果那是不可能的,我建议你需要发布原因。
所以我会以某种方式向两个线程发送一个bool
的引用,当第一个线程完成它会将bool
设置为true
而第二个线程会继续检查此bool
,然后在它为真时退出。
答案 2 :(得分:0)
你可能最好不要从一个即将消失的表单中创建线程。也许你应该在Program.cs中创建线程,然后你可以在应用程序关闭时从那里杀死它们。或者此方法的某些变体取决于应用程序的结构。