使用后台进程时鼠标光标未按预期显示

时间:2012-08-28 16:44:12

标签: c# wpf backgroundworker

我正在运行一个漫长的过程作为后台进程,因为该过程会使我的UI无响应。

现在的问题是,当进程作为后台进程运行时,我想显示一个等待光标。我尝试使用调度程序来更新游标,但它不起作用。

我的流程按下按钮点击:

private void btnStartAsyncOperation_Click(object sender, EventArgs e)
{
    backgroundworkerprocess.RunWorkerAsync();
}

在backgroundworkerprocess事件中:

void backgroundworkerprocess_DoWork(object sender, DoWorkEventArgs e)
{
    this.dispatcher.invoke(DispatcherPriority.Background,
        new action((delegate) {
            this.cursor = cursors.wait
        })
    );
}

我希望这会导致等待光标显示在窗体上的任何位置,但只有当鼠标悬停在按钮上时才会显示。

2 个答案:

答案 0 :(得分:0)

private void btnStartAsyncOperation_Click(object sender, EventArgs e)
{
    this.Cursor = Cursors.WaitCursor;
    backgroundworkerprocess.RunWorkerAsync();
}

void backgroundworkerprocess_DoWork(object sender, DoWorkEventArgs e)
{
    // do work
}

然后只需在RunWorkerCompleted事件中更改Cursor。

答案 1 :(得分:0)

我不认为人们了解你。

试试这个,发送给Dispatcher: Window.GetWindow(this).Cursor = Cursors.WaitCursor;