【发布时间】:2015-01-21 13:39:11
【问题描述】:
在我的 .NET 应用程序中,如果某些任务需要一段时间才能告诉用户程序仍然有效,我将显示一个带有“请稍候”消息的表单。这种形式必须在它自己的线程中运行,因为主线程是在工作的线程,因此很忙。 I read that one can use Form.Owner for this task,但如果表单在不同的线程上运行,我认为这不起作用。
问题是等待表单可以隐藏在主表单后面,在这种情况下用户看不到它,也不能把它带到前面,因为它没有任务栏按钮(它不能有一个)。
我的问题是是否可以让等待表单保持在主表单之上而不使其成为 AlwaysOnTop 表单(它将保持在所有窗口之上)?
【问题讨论】:
-
当然,执行此操作时会收到 IllegalOperationException。有一些方法可以解决这个问题,但是你会发现why your program deadlocked,可能是在你显示那个窗口之后小时。那是为了吓唬你。使用工作线程执行工作,使用 UI 线程显示 UI 不会有问题。
标签: c# .net windows multithreading winforms