質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

1075閲覧

FileInfo Delete() をループ処理していると数件の実行でアプリが落ちる

byori

総合スコア72

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/09/10 04:02

編集2021/09/10 07:25

表題通りで、エラーが吐かれないので困っています。

下記で読み終わった画像ファイルを for ループ内で連続削除しようとしています。何らエラーメッセージを出すことなくアプリが落ちてしまいます。

どのように対処したらいいですか?エラーを吐かせる方法がありますでしょうか?

Windows10 C# WPF VS2019

FileMei は、画像ファイルのパス・・fileMmei、画像ファイルにバーコードがあり読みの為に切り取って保存している・・・cloneMei

C#

1public class FileMei 2{ 3 public string fileMmei, 4 cloneMei; 5 public FileMei(string _fileMei, string _cloneMei) 6 { 7 this.fileMmei = _fileMei; 8 this.cloneMei = _cloneMei; 9 } 10} 11 12List<FileMei> fileList = new List<FileMei>();

fileListは、元画像のパスとバーコード部分を切り取ったファイルパスが、30件から50件程度入っている。
ZXing でバーコードを読んだ後、下記で削除しようとしています。
ZXing のコードは、今回提示していません。(下記のDelete 部分をコメントにして実行すると正しく終わるため)

C#

1for (int h = 0; h < fileList.Count; ++h) 2{ 3 string cloneMei = fileList[h].cloneMei; 4 5 try 6 { 7 FileInfo fileInfo = new FileInfo(cloneMei); 8 // 削除するファイルの読み取り専用属性を確認 9 if ((fileInfo.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) 10 { 11 // 読み取り専用属性を削除 12 fileInfo.Attributes &= ~FileAttributes.ReadOnly; 13 } 14 15 int errNum = System.Runtime.InteropServices.Marshal.GetLastWin32Error(); 16 if(errNum != 0) 17 { 18 MessageBox.Show(""); <- ここには来ない! 19 } 20 21 fileInfo.Delete(); <- ここで強制的に終了する 22 } 23 catch (Exception ex) 24 { 25 MessageBox.Show(ex.Message); 26 }

追記

C#

1File.AppendAllText(@"testLog.TXT", "0 : "+ fileInfo.FullName + "\n"); 2 3fileInfo.Delete(); 4 5File.AppendAllText(@"testLog.TXT", "1 : "+ fileInfo.FullName + "\n"); 6

のようにしてログを書き出し下記のようになってました。情報が小出しのようになりますが、最初から下記のように初めの2、3件は消えてます。Debug で追っかけてもそのぐらいで落ちてしまいます。

Log

10 : \LANDISK-610775\DeliveryList\IraishoSakuseiScan\20210908144132990_0020_MonoBlk.JPG 21 : \LANDISK-610775\DeliveryList\IraishoSakuseiScan\20210908144132990_0020_MonoBlk.JPG 30 : \LANDISK-610775\DeliveryList\IraishoSakuseiScan\20210908144132990_0021_MonoBlk.JPG 41 : \LANDISK-610775\DeliveryList\IraishoSakuseiScan\20210908144132990_0021_MonoBlk.JPG 50 : \LANDISK-610775\DeliveryList\IraishoSakuseiScan\20210908144132990_0022_MonoBlk.JPG

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/09/10 04:08 編集

[見落としがあったので削除]
gentaro

2021/09/10 04:45

まず、どのファイルを処理しようとした時に落ちるのかログを出して確認して、ファイルが特定できればシンプルにそのファイルの削除ができるか検証して、同じ現象が発生するなら他のロジックの影響を考慮しなくて良くなるんで、そのファイル自体に何らかの問題があるのだろう、というところまで絞り込めるのでは。 問題を一気に特定しようとするのではなく、影響範囲をもっと絞り込んだ方が良い。
hihijiji

2021/09/10 06:13

画像ファイルの置き場所のファイルシステムはNTFSですか?
byori

2021/09/10 06:57

画像の置き場所は、LAN DISK になります。IOデータのHDL2-AH2.0 ですが、フォーマット形式を調べる方法がわかりませんでした。NTFS だと思ってましたけど確認できていません。
byori

2021/09/10 07:19

> ログを出して確認 Delete() のタイミングでファイル名を書き出しましたが、削除実行時に落ちています。 特にエラーがないのでわかりませんでした。元質問欄を修正して書き足しました。
dodox86

2021/09/10 07:25

Delete()実行とともExceptionの捕捉無しに落ちているのであれば、ネットワークドライブ下のファイルに手を出しているので、.NET実行環境で拾えない致命的エラーになっているのかもですね。
dodox86

2021/09/10 07:27

アプリでエラーを捕捉できていなければ、Windowsのイベントログに何かエラーが報告されているかもしれません。
hihijiji

2021/09/10 07:35

古いSambaだと例外が出ないトラブルはありがちでしたね。 対処としてはNASのファームのアップデートしてみたり、 NAS自体を変えてみたり、 ファイルシステムを変えてみるとかかな? いずれにしてもソフト面からは対処不可かも?
gentaro

2021/09/10 14:03

特定のファイルで落ちるのではなく、複数のファイルを扱った際にランダムで落ちる(今の質問欄に掲載している以外のファイル・フォルダでも同様の現象が再現する)、という認識で間違いないのなら、検証をした方法を含めて明確に質問欄に記載したほうが良い。(現状そこまで読み取れない)
byori

2021/09/11 02:43

色々アドバイスいただきありがとうございます。 アプリは、不要なファイルの削除を不要になったタイミングで行おうとしていますが現状、何らかの不具合があるようです。見つけるすべがわからないので別の手段などを検討してみます。 > 複数のファイルを扱った際にランダムで落ちる 現状ではその認識です。
guest

回答2

0

私も同様に3,4回目のdeleteでアプリケーション終了しまう現象に悩まされました。
私の場合は、トレンドマイクロのセキュリティーソフトがUnauthorized file encryptionウィルスと判定し
デバッグ中に隔離してしまうのが原因でした。
セキュリティーソフトの除外リストに該当プログラムを追加することにより、正常動作しています。

投稿2023/06/15 11:48

toemon

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

アプリは、不要なファイルの削除を不要になったタイミングで行おうとしていますが現状、何らかの不具合があるようです。
見つけるすべがわからないので別の手段などを検討してみます。

ありがとうございました。

投稿2021/09/11 02:48

byori

総合スコア72

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問