1

私のテストでCancelAsyncは、 が呼び出されると、のメソッドがBackgroundWorker優先されなくなるようです。例外なく実行されますが、実際には何も実行されなくなります。私は次のようなものを想像しています:ReportProgressProgressChangedReportProgressProgressChanged

<code>
if (CancellationPending) return;
</code>

ProgressChanged

他の誰かがこの主張を確認または反論できますか?

これが良いアイデアのように思える理由は理解できますが、コマンド オブジェクトは一度CancelAsync呼び出されるとそれ以上ユーザー通知を行わないと想定しているため、これは誤りのようです。また、実際には、 を呼び出す前に、少なくとも常にキャンセルを確認する必要があることを意味しますReportProgress。これはかなり不格好です。それでも、レースに対して絶対確実だとは思いません(スレッドの麻痺した;-)。

4

1 に答える 1

0

ReportProgress の動作を妨げていたのは、私自身のコードであることがわかりました。当たり前。CancelAsync が呼び出され、CancellationPending が true に設定された後でも、ReportProgress が呼び出されることを確認しました。

于 2012-09-12T23:08:54.617 に答える