为什么沙漏 (WaitCursor) 会停止旋转?
Why would the hourglass (WaitCursor) stop spinning?
我在按钮点击中获得了代码,如下所示:
try
{
Cursor = Cursors.WaitCursor;
GenerateReports();
}
finally
{
Cursor = Cursors.Default;
GC.Collect();
GenPacketBtn.Enabled = true;
}
除了在 finally 块中,没有其他地方将游标设置回默认状态,但它确实 "get tired" 并由于某种原因恢复到默认状态。为什么会这样,我如何确保它不会停止 "waiting",直到所有进程的老大哥 (GenerateReports()) 完成?
改用Control.UseWaitCursor = true
,这个不会超时。
如果正在执行昂贵的操作,那么 Windows 将接管并将 Cursor.WaitCursor
更改为它认为必要的任何内容。因此,对于 Cursor.WaitCursor ,它要么是由于超时(但对此不完全确定),要么是因为 Windows 只是声明游标的所有权而不考虑其先前的状态。我们也遇到过类似的情况,在执行涉及称为第 3 方 PDF 转换器的昂贵任务时,光标没有按预期运行,但我们没有对问题的性质进行更多调查,因为这不是优先事项。
经过一番阅读,发现设置沙漏光标比看起来要复杂一些:
.net WaitCursor: how hard can it be to show an hourglass?
另请注意:您应该使用 Cursor.Current = Cursors.WaitCursor
,因为这会强制光标立即变为忙碌状态,更多详细信息,请访问:
我在按钮点击中获得了代码,如下所示:
try
{
Cursor = Cursors.WaitCursor;
GenerateReports();
}
finally
{
Cursor = Cursors.Default;
GC.Collect();
GenPacketBtn.Enabled = true;
}
除了在 finally 块中,没有其他地方将游标设置回默认状态,但它确实 "get tired" 并由于某种原因恢复到默认状态。为什么会这样,我如何确保它不会停止 "waiting",直到所有进程的老大哥 (GenerateReports()) 完成?
改用Control.UseWaitCursor = true
,这个不会超时。
如果正在执行昂贵的操作,那么 Windows 将接管并将 Cursor.WaitCursor
更改为它认为必要的任何内容。因此,对于 Cursor.WaitCursor ,它要么是由于超时(但对此不完全确定),要么是因为 Windows 只是声明游标的所有权而不考虑其先前的状态。我们也遇到过类似的情况,在执行涉及称为第 3 方 PDF 转换器的昂贵任务时,光标没有按预期运行,但我们没有对问题的性质进行更多调查,因为这不是优先事项。
经过一番阅读,发现设置沙漏光标比看起来要复杂一些:
.net WaitCursor: how hard can it be to show an hourglass?
另请注意:您应该使用 Cursor.Current = Cursors.WaitCursor
,因为这会强制光标立即变为忙碌状态,更多详细信息,请访问: