【Windows 7】動画ファイルが保存されたフォルダを削除できません。
- 題名: 【Windows 7】動画ファイルが保存されたフォルダを削除できません。
- 著者: @USK
- 日時: 2010/05/25 11:56:15
- ID: 26873
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 【Windows 7】動画ファイルが保存されたフォルダを削除できません。
- 著者: なちゃ
- 日時: 2010/05/26 19:52:31
- ID: 26879
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 【Windows 7】動画ファイルが保存されたフォルダを削除できません。
- 著者: @USK
- 日時: 2010/05/27 21:04:39
- ID: 26885
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: 【Windows 7】動画ファイルが保存されたフォルダを削除できません。
- 著者: その他
- 日時: 2010/05/28 11:41:22
- ID: 26887
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: 【注意】「書き込みのルールについて」をお読みください
- 著者: 管理人
- URL: http://dobon.net/
- 日時: 2010/05/29 4:23:18
- ID: 26894
- この記事の返信元:
- この記事への返信:
-
[26903] 検証しました。 @USK 2010/06/02 15:25:34
- ツリーを表示
- 題名: 検証しました。
- 著者: @USK
- 日時: 2010/06/02 15:25:34
- ID: 26903
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: 【注意】「書き込みのルールについて」をお読みください
- 著者: 管理人
- URL: http://dobon.net/
- 日時: 2010/06/03 3:37:22
- ID: 26905
- この記事の返信元:
-
[26903] 検証しました。 @USK 2010/06/02 15:25:34
- この記事への返信:
- ツリーを表示
分類:[.NET]
2010/05/25(Tue) 16:41:21 編集(投稿者)
初めて投稿致します。宜しくお願いします。
今までOS:Windows XPで問題なく動作していた機能(動画保存用一時フォルダの
削除)がWindows 7に移行した途端に動作しなくなりました。
いろいろと試してみたのですが、まったく解決の糸口が見つからないため投稿させて頂きました。
【問題箇所について】
C#で開発している画像・動画保存・再生のアプリです。
動画を登録する際にユーザーが登録画面で指定したパスの動画ファイルをまず、
ユーザーの端末名で作成した一時保存フォルダに命名規則にしたがった名前で
保存してから再生するようになっています。それから、@ユーザーが登録を確定
すれば、一時保存フォルダにある動画ファイルを実フォルダにコピーして一時保存
フォルダを削除、Aキャンセルすれば、ただ一時保存フォルダを削除するように
なっています。
しかし、Windows XPで問題なく動作していた一時保存フォルダ削除がWindows 7
では「ディレクトリが空ではありません。」というエラーでフォルダが削除できなくなってしまいました。
【検証内容】
(1)画像ファイルのほぼ同じコーディング箇所では全く問題なく一時保存
フォルダが削除される。
(2)フォルダ削除前に中のファイルを削除するPGを追加。
⇒ファイル削除は通るがやはりフォルダ削除でエラーが発生。
エラー:「パス '○○○○.wmv' へのアクセスが拒否されました。」
⇒しかし、確認するとこの動画ファイルはフォルダから削除されている。
(3)エラーが出ないでうまくいくことがたまにある。
※同様の動画ファイルで実験し、3〜5回に1度くらい正常に削除される
※容量が大きい動画ファイルほどエラーが出る?
(4)Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectoryを利用すると
エラーはスローされないが、フォルダは削除されない。
(5)System.Threading.Thread.Sleepで適当な時間待たせるとフォルダが正常に
削除された。
【プログラム】
string TempGazoPath =
"C:\\Test\\Temp\\Gazo\\" + System.Environment.MachineName
string TempDogaPath =
"C:\\Test\\Temp\\Doga\\" + System.Environment.MachineName
■一時保存フォルダ作成箇所
if (false == System.IO.Directory.Exists(TempGazoPath))
{
//画像一時保存フォルダ作成
System.IO.Directory.CreateDirectory(TempGazoPath);
}
if (false == System.IO.Directory.Exists(TempDogaPath))
{
//動画一時保存フォルダ作成
System.IO.Directory.CreateDirectory(TempDogaPath);
}
■一時保存フォルダ削除箇所
try
{
//画像ファイル削除
if (System.IO.Directory.Exists(TempGazoPath))
{
Global.Util.DeleteDirectory(TempGazoPath);
}
//↓検証のため追加したPG(フォルダ内の動画削除)
//System.IO.File.Delete(TempDogaPath + "\\○○○.wmv");
//動画ファイル削除
if (System.IO.Directory.Exists(TempDogaPath))
{
//メディア・プレイヤーを停止
axWindowsMediaPlayer1.Ctlcontrols.stop();
axWindowsMediaPlayer1.close();
//System.Threading.Thread.Sleep(10000);←★一定時間待機すると正常に削除
System.IO.Directory.Delete(TempDogaPath, true);←★エラー発生
/* こっちでもフォルダは削除されない。
Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory(
TempDogaPath,
Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs,
Microsoft.VisualBasic.FileIO.RecycleOption.DeletePermanently,
Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
*/
}
}
catch (Exception ex)
{
MessageBox.Show(
ex.Message,
"エラー",
System.Windows.Forms.MessageBoxButtons.OK,
System.Windows.Forms.MessageBoxIcon.Error
);
}
以上です。
動画ファイルが何かに掴まれてしまっているのでしょうか?
しかし、それだとうまく行く場合もあるし、ファイルを先に消すプログラムが
正常に動作している理由がわかりません。そもそもXPでは動作していたのです。
ご教授ください。
宜しくお願い致します。