C#, C♯, C#相談室 Part40
■ このスレッドは過去ログ倉庫に格納されています
0059デフォルトの名無しさん
2007/06/20(水) 09:28:25以前作った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イベントで参照
するとか考えたんですが、
ほかにうまい方法があったら教えてください。
ながくてすまん。
■ このスレッドは過去ログ倉庫に格納されています