前提
Windows11でフォルダを監視して、jpgをbmpに処理するPGを作っているのですが
なぜか3つ目か4つ目のファイルでエラーになります。
しかも同じファイルを複製してもかならず3回目でエラーになります。
ちゃんとBitmapもDisposeしているのですが、解決できないため質問させて頂きます。
なにかわかるかたよろしくお願いいたします
発生している問題・エラーメッセージ
System.ArgumentException HResult=0x80070057 Message=使用されたパラメーターが有効ではありません。 Source=System.Drawing スタック トレース: at System.Drawing.Bitmap..ctor(String filename) at ImageCorrection.ImageCorrection.qr_detect(String filepath) in C:\Imagetest\Imagetest\forms.cs:line 207 at ImageCorrection.ImageCorrection.watcher_Changed(Object source, FileSystemEventArgs e) in C:\Imagetest\Imagetest\forms.cs:line 166
再現できる実際のコード
C#
1private void Image_Load(object sender, EventArgs e) 2{ 3 //監視 4 watcher = new System.IO.FileSystemWatcher(); 5 6 //監視するディレクトリを指定 7 watcher.Path = watch_folder; 8 9 //最終アクセス日時、最終更新日時、ファイル、フォルダ名の変更を監視する 10 watcher.NotifyFilter = 11 (System.IO.NotifyFilters.LastAccess 12 | System.IO.NotifyFilters.LastWrite 13 | System.IO.NotifyFilters.FileName 14 | System.IO.NotifyFilters.DirectoryName); 15 16 //すべてのファイルを監視 17 watcher.Filter = ""; 18 19 //UIのスレッドにマーシャリングする 20 //コンソールアプリケーションでの使用では必要ない 21 watcher.SynchronizingObject = this; 22 23 //イベントハンドラの追加 24 watcher.Created += new System.IO.FileSystemEventHandler(watcher_Changed); 25 26 //監視を開始する 27 watcher.EnableRaisingEvents = true; 28 29 textBox1.Text = "監視を開始しました。"; 30 31} 32 33//イベントハンドラ 34private void watcher_Changed(System.Object source,System.IO.FileSystemEventArgs e) 35{ 36 switch (e.ChangeType) 37 { 38 case System.IO.WatcherChangeTypes.Created: 39 40 textBox1.Text = textBox1.Text + System.Environment.NewLine + "ファイル追加!!"; 41 42 System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(e.FullPath); 43 bmp.Dispose(); 44 45 break; 46 47 } 48} 49
補足情報(FW/ツールのバージョンなど)
開発環境windows11 Microsoft Visual Studio Community 2022 (64 ビット)
追記
下記のようにImageにしても同様のエラーが発生するため、FileSystemWatcher関連のエラーな気がしてきました。
ロックされているとか?
watcher.Createdってアクセスできる状態になっているということではないのでしょうか?
c#
1FileStream fs = File.OpenRead(e.FullPath); 2Image img = Image.FromStream(fs, false, false); 3img.Dispose();

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/10/31 19:58