为什么沙漏(WaitCursor)会停止旋转
本文关键字:旋转 沙漏 WaitCursor 为什么 | 更新日期: 2023-09-27 18:26:14
我有一个按钮点击中的代码,如下所示:
try
{
Cursor = Cursors.WaitCursor;
GenerateReports();
}
finally
{
Cursor = Cursors.Default;
GC.Collect();
GenPacketBtn.Enabled = true;
}
除了finally块之外,其他地方都没有将光标设置回默认状态,但由于某种原因,它确实"累了"并恢复到默认状态。为什么会出现这种情况,我如何保证它不会停止"等待",直到所有流程的"老爹"(GenerateReports())完成?
请改用Control.UseWaitCursor = true
,这样不会超时。
如果正在执行昂贵的操作,则Windows将接管,并将Cursor.WaitCursor
更改为其认为必要的任何值。因此,对于Cursor.WaitCursor,它要么是由于超时(但不完全确定),要么是因为Windows只是声称拥有光标,而不考虑其以前的状态。我们也遇到过类似的情况,在执行一项涉及第三方PDF转换器的昂贵任务时,Cursor的行为没有达到预期,但我们没有对问题的性质进行更多调查,因为这不是优先事项。
经过一点阅读,事实证明设置沙漏光标比看起来更复杂:
.net WaitCursor:显示沙漏有多难?
另请注意:您应该使用Cursor.Current = Cursors.WaitCursor
,因为这会迫使光标立即变为忙碌,更多详细信息请访问:https://stackoverflow.com/a/302865/1463733