0

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
        })
    );
}

これにより、フォームのどこにでも待機カーソルが表示されることを期待していましたが、マウスがボタンの上にあるときにのみ表示されます。

4

2 に答える 2

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イベントでカーソルを元に戻すだけです。

于 2012-08-28T17:21:36.580 に答える
0

私は人々があなたを理解しているとは思わない。

これを試して Dispatcher に送信してください: Window.GetWindow(this).Cursor = Cursors.WaitCursor;

于 2012-08-28T17:41:20.397 に答える