c# - 无法更改当前光标

标签 c# cursor wait

以下代码测试我的连接。连接超时设置为 30 秒。我想将当前光标更改为等待光标,但它不起作用。

我的代码:

private void pbConnectionTest_Click(object sender,EventArgs e) {
    try {
        Cursor.Current = Cursors.WaitCursor;
        Thread thread = new Thread(new ThreadStart(TestConnection));
        thread.Start();
    } finally {
        Cursor.Current = Cursors.Default;
    }

我还尝试在函数 TestConnection 中处理 Cursor。但它在那里不起作用。

这个例子工作没有问题:

Cursor.Current = Cursors.WaitCursor;
try
{
  Thread.Sleep(5000);  // wait for a while
}
finally
{
  Cursor.Current = Cursors.Default;
}

我做错了什么?

最佳答案

下面的代码是错误的(逻辑上)。

finally 
{             
    Cursor.Current = Cursors.Default;
}

这里发生的是

  1. 光标将更改为等待光标。
  2. 线程将启动,并且光标将立即再次更改为默认值。(在线程完成之前)。

因此,您应该在线程完成后放置以下语句。

        Cursor.Current = Cursors.Default;

这里你应该知道的是,调用 thread.Start(); 将立即返回。(不等待线程完成)

解决方案1finally block 中删除语句并执行以下操作。

void TestConnection()
{
    ..............
    ..................


   this.Invoke(new MethodInvoker(() =>
   {
        Cursor = Cursors.Default;
   }));   
}

关于c# - 无法更改当前光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20843871/

相关文章:

c - 为什么 wait4() 被 waitpid() 取代

使用 CyclicBarrier 的 Java 循环线程

c# - 重新利用现有的 GUI,同时保留大部分相同的功能

c# - 无法确定主体端 - Entity Framework 代码优先关系

c# - 在 MemoryStream 中拆分 mp3 音频的正确方法是什么?

python - Tkinter .icursor(*arg) 奇怪的行为

c# - WPF 网页浏览器 : changing IE print dialog properties programmatically

firefox - Firefox 输入元素(搜索框)中的光标位置错误

qt - 如何在 QLineEdit 中设置插入符号闪烁光标的颜色

swift - 让函数等待响应 - Swift