- - PR -
テキストファイルの排他について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-05-29 11:58
いつもお世話になっています。川崎です。
VB.NETでWebアプリ開発をしております。 各端末からファイル書込みをさせようと思い、 書込時に排他制御を組み込もうと思いました。 色々試したあげく、うまくいったのが以下の方法でした。 ページ側(aspx.vb)側処理 '+----------------------------------------------------------+ Dim loglog As New B_LogOut() Application.Lock() loglog.LogFileOut("あいうえお" & Now) Application.UnLock() '+----------------------------------------------------------+ クラス側(.vb) '+----------------------------------------------------------+ Public Class B_LogOut Public Sub LogFileOut(ByVal p_strTxt As String) Dim encodedata As System.Text.Encoding Dim writer As System.IO.StreamWriter, reader As System.IO.StreamReader Dim source As System.IO.DirectoryInfo = New System.IO.DirectoryInfo("C:\") '書込み処理 Try writer = New System.IO.StreamWriter("C:\testlog.txt", True, _ System.Text.Encoding.GetEncoding("Shift_JIS")) writer.WriteLine(p_strTxt) writer.Close() Catch End Try End Sub End Class '+----------------------------------------------------------+ ページ側で、Application.Lock() をやっていますが、 これをクラス側の関数(LogFileOut)を呼ぶ都度記述しないといけない ために、クラス側の関数(LogFileOut)内にApplication.Lock() を記述したところ、エラーとなりました。 「System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。」 クラス(.vb)側で Application.Lock() は使用できないのでしょうか。 また、他になにか排他制御処理でよい方法はないでしょうか。 どなたか御教授願います。 |
|
投稿日時: 2003-05-29 14:34
こんにちは。
自作クラス内で Application.Lock() を呼び出すのであれば、 System.Web.HttpContext の Currentプロパティを取得し、 (HttpContextオブジェクトが得られます) そこから、Application プロパティをたどって Lock()メソッドを 呼び出すことができます。 このスレッドが参考になると思います。 |
|
投稿日時: 2003-05-29 15:16
ありがとうございます。
以下のようにしましたら、うまくいきました。 +-------------------------------------------------------------------+ Public Sub LogFileOut(ByVal p_strTxt As String) Dim encodedata As System.Text.Encoding Dim writer As System.IO.StreamWriter, reader As System.IO.StreamReader Dim source As System.IO.DirectoryInfo = New System.IO.DirectoryInfo("C:\") ''書込み処理 System.Web.HttpContext.Current.Application.Lock() '*ロック* writer = New System.IO.StreamWriter("C:\testlog.txt", True, _ System.Text.Encoding.GetEncoding("Shift_JIS")) writer.WriteLine(p_strTxt) writer.Close() System.Web.HttpContext.Current.Application.UnLock() '*ロック解除* End Sub +-------------------------------------------------------------------+ どうもありがとうございました。助かりました。 |
1