0

バックグラウンドワーカーを使用して、何時間も続くループで大きなファイルを処理しています。GUI では、現在進行中のファイルをラベルとプログレスバー コントロールで表示します。ほとんどの場合、すべて問題ありません。

私の問題は; ときどき (いくつかのロックされたファイルまたは破損したファイルの可能性があります。try catches ですべてを処理しましたが)、数時間後、現在のファイル名とプログレスバーの値が GUI で変更されません (たとえば、10000 番目のファイル)。まだ応答があります...つまり、GUI のフリーズの問題ではありません。しかし、バックグラウンド ワーカーが終了したとは言いません (reportprogress と完了イベントの両方を正しく処理しました)。残念ながら、その状態のままなので、プログラムを強制終了して再起動しますが、同じファイルでスタックします。

そう; どこで (どのメソッドまたは行で) コードがスタックしたかを理解したい...キャッチブロックを試してみても手がかりが得られない..

これを実現するために、GUI にボタンを配置する予定です。何かのファイルで動かなくなったときにそのボタンを押すと、現在実行中の (つまり動かなくなった) メソッド名と行番号を含む DEBUG 情報が表示されます。もし可能なら...

StackTrace などは、使用すると、記述したメソッドのトレースが得られるため、解決策ではありません...

何か案が?

(コードの次の行を続行するなどの解決策でも十分です。プログラムを再起動して、再び多くの時間を失いたくありません)

4

1 に答える 1