我希望我能解释得足够清楚。我有主窗体(A),它使用form.Show()打开1个子窗体(B),并使用form.Show()打开第二个子窗体(C)。现在,我希望子窗体B使用form.ShowDialog()打开窗体(D)。当我这样做时,它也会阻塞窗体A和窗体C。有没有办法打开模式对话框,并且只阻止它打开窗体?
如果在不同于A和C的线程上运行Form B,则ShowDialog调用将仅阻塞该线程。显然,这当然不是一项琐碎的投资。
只需在单独的线程上运行Form D的ShowDialog调用,就可以使对话框根本不阻塞任何线程。这需要相同的工作量,但所需的工作量却少得多,因为您的应用程序主线程只有一种形式在运行。