-3

我有多种形式在密集操作期间弹出。例如,当弹出一个表单向用户询问某事时,用户单击“确定”,该表单的图形将保留在主屏幕上,即使它已关闭。

我怎样才能使这些图形完全消失?我正在使用System.Threading.Thread.sleep(10)暂停应用程序,但屏幕停止并且更改不清楚。我应该怎么办?

4

1 回答 1

3

只要表单在现在无法处理任何窗口消息(尤其是重绘本身)的基础窗口上关闭,关闭的表单的“图形”仍然可见。

为避免这种情况,您要么必须Application.DoEvents()在关闭子窗体后调用(仅适用于 WinForms,通常不推荐),要么需要将导致消息泵阻塞的代码放入单独的线程中,例如使用aBackgroundWorker或 a Task,如果您想保持应用程序响应,强烈建议使用它。

也是如此Thread.Sleep(10)。这会阻止当前(UI-)线程处理任何消息,因此窗口在该时间段内没有响应。

于 2013-01-03T15:56:55.477 回答