C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ファイルを削除 エラー

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■95138 / inTopicNo.1)  ファイルを削除 エラー
  
□投稿者/ 工場プログラマー (21回)-(2020/06/25(Thu) 09:47:36)

分類:[.NET 全般] 

VB2019を使用しています。
テキストファイルのデータ件数を調べてメールテキストファイルを添付した後、
テキストファイルを削除したいのですが例外が発生します。

別のプロセスで使用されているため、プロセスはファイル'***.txt'にアクセスできません。

一応、
Filepath = ***.txt
FileOpen(1,Filepath,OpenMode.Input)
---------------------
FileClose(1)
で閉じてあるはずなのですが、閉じ切れていないのでしょうか?
この例外を回避するにはStreamReader?で回避できますでしょうか。


引用返信 編集キー/
■95139 / inTopicNo.2)  Re[1]: ファイルを削除 エラー
□投稿者/ 774RR (798回)-(2020/06/25(Thu) 10:19:27)
2020/06/25(Thu) 11:17:46 編集(投稿者)

(読み込みのみアクセスのときは適用されないはずなんだけど)
ファイルを開いて、閉じた、ならセキュリティソフトが直ちにリアルタイム検索を行う
=削除しようとしたとき当該ファイルはセキュリティソフトによって開かれている

あるいは MUA (この場合 MailKit) が実際にメールを作成するタイミングは API から戻った後で
あなたのプログラムがファイルを削除しようとしているとき MailKit は真にファイルを読んでいる

=別のプロセスで使用されているため、以下略
のではないかと推測。

よって原理的に「待つ」しか対策が無いっす。
削除を数回試す / エラーにならないよう try catch で囲む + Thread.Sleep で待つ
とよいかも。
引用返信 編集キー/
■95140 / inTopicNo.3)  Re[2]: ファイルを削除 エラー
□投稿者/ 工場プログラマー (22回)-(2020/06/25(Thu) 10:25:58)
> よって原理的に「待つ」しか対策が無いっす。
> 削除を数回試す / エラーにならないよう try catch で囲む + Thread.Sleep で待つ
> とよいかも。
待つことが解決になることもあるんですね、試してみます。
ありがとうございます。
引用返信 編集キー/
■95141 / inTopicNo.4)  Re[1]: ファイルを削除 エラー
□投稿者/ furu (58回)-(2020/06/25(Thu) 11:20:30)
No95138 (工場プログラマー さん) に返信
> VB2019を使用しています。
> テキストファイルのデータ件数を調べてメールテキストファイルを添付した後、
> テキストファイルを削除したいのですが例外が発生します。
まずは障害の切り分けです。

  ファイルアクセス(データ件数取得)のみでファイル削除
  メール送信(ファイル添付)のみでファイル削除

メール送信のみで例外が発生する場合
usingやDispose漏れを疑ってください。
引用返信 編集キー/
■95142 / inTopicNo.5)  Re[2]: ファイルを削除 エラー
□投稿者/ 工場プログラマー (23回)-(2020/06/25(Thu) 11:51:52)
2020/06/25(Thu) 11:57:53 編集(投稿者)
No95139 (774RR さん) に返信
> 削除を数回試す / エラーにならないよう try catch で囲む + Thread.Sleep で待つ

Do Until Filepath = Nothing
Kill(Filepath)
Loop
で削除を試しましたがうまくいきませんでした。
Thread.Sleepで待つのも試してみたのですが業務で使うので実用的じゃないと思うので採用できそうにないです。

引用返信 編集キー/
■95143 / inTopicNo.6)  Re[2]: ファイルを削除 エラー
□投稿者/ 工場プログラマー (24回)-(2020/06/25(Thu) 11:57:07)
2020/06/25(Thu) 12:03:51 編集(投稿者)
No95141 (furu さん) に返信
> まずは障害の切り分けです。
> 
>   ファイルアクセス(データ件数取得)のみでファイル削除
>   メール送信(ファイル添付)のみでファイル削除
> 
> メール送信のみで例外が発生する場合
> usingやDispose漏れを疑ってください。

切り分けて行ってみました。
どうやらメール送信のみに例外が発生していました。
Disposeを使っていませんでした。
使い方がうまくわからないのですが、どう使えばいいでしょうか?

引用返信 編集キー/
■95144 / inTopicNo.7)  Re[3]: ファイルを削除 エラー
□投稿者/ furu (59回)-(2020/06/25(Thu) 12:10:29)
No95143 (工場プログラマー さん) に返信
> Disposeを使っていませんでした。
> 使い方がうまくわからないのですが、どう使えばいいでしょうか?
すみません。VBはわからないです。

usingやDispose使えないと
リソース使うプログラムでいろいろ困るので
自分で調べて勉強したほうがいいです。
引用返信 編集キー/
■95147 / inTopicNo.8)  Re[4]: ファイルを削除 エラー
□投稿者/ 工場プログラマー (25回)-(2020/06/25(Thu) 12:54:26)
2020/06/25(Thu) 16:09:13 編集(投稿者)

No95144 (furu さん) に返信
> ■No95143 (工場プログラマー さん) に返信
>>Disposeを使っていませんでした。
>>使い方がうまくわからないのですが、どう使えばいいでしょうか?
> すみません。VBはわからないです。
>
> usingやDispose使えないと
> リソース使うプログラムでいろいろ困るので
> 自分で調べて勉強したほうがいいです。

わかりました。
まだかけだしプログラマーなのでネットで漁って勉強してきます。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ