我有一个类似的问题,我有两个Winforms,f1和f2。
当点击按钮时,f1会启动一个循环,这个循环检查一个条件并决定是否调用另一个窗体f2。
问题是,循环可能会多次调用f2,因此每次调用另一个窗体f2时,第一个窗体f1都应该暂停执行。
所以,我这样解决了,我使用了backgroundWorker + AutoResetEvent。我将backgroundWorker放置在第一个窗体中,并在DoWork事件处理程序中调用f2.Show(),然后在AutoResetEvent上调用WaitOne。
在另一个窗体"f2"中,在退出按钮上,我调用相同的A上的Set。
但是,不幸的是,当在f1中单击该按钮时,f2会被冻结,我应该改变什么?
当点击按钮时,f1会启动一个循环,这个循环检查一个条件并决定是否调用另一个窗体f2。
问题是,循环可能会多次调用f2,因此每次调用另一个窗体f2时,第一个窗体f1都应该暂停执行。
所以,我这样解决了,我使用了backgroundWorker + AutoResetEvent。我将backgroundWorker放置在第一个窗体中,并在DoWork事件处理程序中调用f2.Show(),然后在AutoResetEvent上调用WaitOne。
在另一个窗体"f2"中,在退出按钮上,我调用相同的A上的Set。
但是,不幸的是,当在f1中单击该按钮时,f2会被冻结,我应该改变什么?