以下代码测试了我的连接。连接超时设置为30秒。我想将当前的Cursor更改为waitcursor,但是它不起作用。
我的代码:
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;
}
这里发生的是
因此,您应该在线程完成后放置以下语句。
Cursor.Current = Cursors.Default;
在这里您应该知道的是,该调用thread.Start();
将立即返回。(无需等待线程完成)
解决方案1从finally
块中删除语句,然后执行以下操作。
void TestConnection()
{
..............
..................
this.Invoke(new MethodInvoker(() =>
{
Cursor = Cursors.Default;
}));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句