5

我在按钮点击中有代码,如下所示:

try
{
    Cursor = Cursors.WaitCursor;
    GenerateReports();
}
finally
{
    Cursor = Cursors.Default;
    GC.Collect();
    GenPacketBtn.Enabled = true;
}

除了 finally 块之外,没有其他地方将光标设置回默认值,但它确实“感到疲倦”并出于某种原因恢复到其默认状态。为什么会这样,我如何保证它不会停止“等待”,直到所有进程的大爸爸(GenerateReports())完成?

4

1 回答 1

3

改用Control.UseWaitCursor = true,这不会超时。

如果正在执行昂贵的操作,则 Windows 将接管并将其更改Cursor.WaitCursor为它认为必要的任何内容。因此,对于 Cursor.WaitCursor,它要么是由于超时(但对此不完全确定),要么是因为 Windows 只是声称拥有光标的所有权,而不考虑其先前的状态。我们也遇到过类似的情况,在执行涉及称为 3rd 方 PDF 转换器的昂贵任务时,光标没有按预期运行,但我们没有对问题的性质进行更多调查,因为它不是优先事项。

经过一番阅读,结果发现设置沙漏光标比看起来要复杂一些:

.net WaitCursor:展示沙漏有多难?

另附注:您应该使用Cursor.Current = Cursors.WaitCursor它,因为这会强制光标立即变为忙,更多详细信息请访问:https ://stackoverflow.com/a/302865/1463733

于 2015-12-09T20:36:35.270 回答