ディスクフル時のエラー処理
- 題名: ディスクフル時のエラー処理
- 著者: さかもと
- 日時: 2006/01/13 19:46:12
- ID: 14525
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: ディスクフル時のエラー処理
- 著者: 管理人
- URL: http://dobon.net/
- 日時: 2006/01/14 4:10:17
- ID: 14528
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: ディスクフル時のエラー処理
- 著者: さかもと
- 日時: 2006/01/16 8:29:30
- ID: 14547
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: ディスクフル時のエラー処理
- 著者: さかもと
- 日時: 2006/01/16 8:42:53
- ID: 14548
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
はじめまして。お世話になります。
早速本題ですが
OS : WinXP
Visual Studio 2003 VisualBasic .NET
でのプログラミング時にちょっと困ったことが起きてご相談です。
デバッガ上で以下のようなコードを走らせてみるとわかりますが
書き込みが原因でディスクフルの状態になった後、
ファイルのクローズができないためその後のファイルの処理ができ
なくなるために対応策を検討しています。
ファイルを扱う上でディスクフルは無視することができない
例外処理のため、こんな現象には困ったことがある方も
多いかと思います。
対処法として皆さんどんな方法を取られているのかヒントだけでも
教えていただけると助かります。
=========
(※注意)
以下テストプログラム動作させる際にはFDなどディスクフルが
おきても重大な問題が起こらないドライブでテストしてください。
=========
Sub diskfull_test()
Const FN as integer = 1
try '一度目のオープン
FileOpen(FN , "a:\testfilename", OpenMode.Output)
Catch ex As Exception
MsgBox("FileOpen Error" & Err.Description)
End Try
try 'ディスクフルが出る書き込みを行う。
Dim i as integer
For i=1 to 10000 'ここの値は適当に変更してください。
PrintLine(FN , "test")
Next
Catch ex As Exception
MsgBox("PrintLine Error" & Err.Description)
End Try
Try 'ディスクフルが出てクローズできない
FileClose(FN)
Catch ex As Exception
MsgBox("FileClose Error" & Err.Description)
End Try
try 'ファイルがクローズできていないためオープンできない
FileOpen(FN , "a:\testfilename", OpenMode.Output)
Catch ex As Exception
MsgBox("FileOpen Error" & Err.Description)
End Try
Try 'ファイルがオープンできていないためクローズできない
FileClose(FN)
Catch ex As Exception
MsgBox("FileClose Error" & Err.Description)
End Try
End Sub