お世話になります。
Serviceアプリケーションの中でAPIのCopyFileを実行しているのですが、
USBが安全な取り外しができない状態になります。
Serviceを停止すると安全な取り外しができます。
CopyFileによりUSBが使用中の状態になっていると推測されますが、
Service内で何らかその状態を解放する方法はありますでしょうか?
どなたかご回答宜しくお願い致します。
言語: Delphi6 Ent
OS: XP pro
よくわからないんだけど、CopyFileで内蔵HDD→内蔵HDD間のコピー中、
USBデバイスを使用していないにもかかわらず取り外しができなくなるということ?
カレントディレクトリがUSBになっているとかではないですか?
CopyFileだけではカレントディレクトリが変わることはないですが、念のため。
ささ 様
WindowsServiceの中で、Oracleの定期バックアップをしていて、バックアップファイルがある内臓HDDからUSBにデータ退避を行うというものです。
しの 様
カレントディレクトリで確認しましたが、確かにCopyFileが原因ではありませんでした・・。よく調べたら、FindFirst,FindNextを使っている箇所で、最後FindCloseをしておりませんでした。それが原因でした。
大変申し訳有りません。しかし、原因を突き止めることができて、助かりました。ありがとうございました。
USBメディアにコピーをするServiceなんだよね?
Serviceの性質上常に実行されてる状態だから、
Service起動中にUSBが保持されるのは当然じゃないかと思うんだけど。
もしやるなら、USBの取り外しはServiceを終了することにして、
USBメディアが存在するかどうかの検出に別のServiceを使えば?
失礼。
解決でしたね
ささ様
解決はしましたが、
親身になってお答えいただいてうれしく思います。
ありがとうございました。
今後とも宜しくお願いします。
ツイート | ![]() |