BackgroundWorkerについて相談です。
以前作ったFileEnum(仮名)というクラスがあって、EnumDir(path, pattern)という
メソッドを呼ぶと、ディレクトリを再帰走査して、ディレクトリ一個ずつ
FindDirイベントが発生する、というものです。
Abort()メソッドも付けてあって、従来のスレッド処理やDoEvents()を使った方法で
中止させることができます。

こいつをBackgroundWorkerで処理させようと思い、とりあえずキャンセルボタンを
増設してBackgroundWorker.CancelAsync()を呼ぶようにしました。
資料を読むと、キャンセルさせたいときには
DoWork イベント内でCancellationPendingプロパティを監視してDoWorkEventArgs.Cancel
を設定しろ、ということらしいです。

しかし上記のクラスだとDoWork内で呼び出したFileEnum.EnumDir()メソッドが、
いったんこちらにお返しするのが別のイベントになってるので、
DoWorkEventArgsを参照できないので困っています。
DoWorkEventArgsは無視して、FindDirイベントの中でCancellationPending=trueなら
FileEnum.Abort()しとけばいいんでしょうか?
それはよくないという場合、たとえば
DoWorkEventArgsを呼び出しフォームのフィールドに代入してFindDirイベントで参照
するとか考えたんですが、
ほかにうまい方法があったら教えてください。
ながくてすまん。