ユーザーから報告された奇妙な問題があり、一度私が再現しました。
様々なボタンを備えたフォルムを持ち、各ボタンが長い操作を行います。
新しいボタンをクリックすると、古い操作が停止し、新しい操作が開始されます。
そして、私は奇妙な振る舞いに気づきました:
ボタンをクリックしても動作しないことがあります。次のコードのため、操作を開始できません:
if (!Worker.IsBusy)
{
RunReload();
}
else
{
isWorkerPendingForNewJob = true;
Worker.CancelAsync();
}
キャンセルは数回呼び出されますが、私のワーカーは常に忙しいです!
プロジェクトの実行にブレーキをかけると、ロックセクションで停止することに気付きました。
このロック内では、すべてのプロセスに使用されるいくつかのオブジェクトを作成しています。
画像のブレークポイントはヒットしません。backgroundworked が常にビジーで、この回線でロックされているのはなぜですか?