aspx Webフォームとソケットサーバーがデータを保存するフラットファイルにアクセスする原始的なWebサイトを取得しました。socketserver は、書き込み用にまったく同じファイルにアクセスします。これは、読み取り用に aspx c# コードによってアクセスされます。ファイルのロックに問題がある可能性があると思います。サーバーがファイルにすばやく書き込み、ファイルのロックを解除することが優先度が高いと思います。Web フォームは、サーバーの書き込みプロセスを中断することなく読み取ることができる必要があります。これを行う最善の方法は何ですか?ストリームライターを使用していますか?
サーバーはこの呼び出しを使用して、ファイルへの書き込み中に読み取り用にのみファイルを共有しました。
if (!File.Exists(filepath))
{
using (FileStream fileStream = new FileStream(filepath, FileMode.CreateNew, FileAccess.Write, FileShare.Read))
{
using (TextWriter writer = new StreamWriter(fileStream))
{
writer.WriteLine(data);
m_clientSocket.Send(BitConverter.GetBytes(data.Length));
}
}
}
else
{
using (FileStream fileStream = new FileStream(filepath, FileMode.Append, FileAccess.Write, FileShare.Read))
{
using (TextWriter writer = new StreamWriter(fileStream))
{
writer.WriteLine(data);
m_clientSocket.Send(BitConverter.GetBytes(data.Length));
}
}
}
次のコマンドで読み取られる Web フォーム
using (FileStream stream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (TextReader reader = new StreamReader(stream))
{
//string fileContents = tr.ReadToEnd();
while ((line = reader.ReadLine()) != null)
{
if (!string.IsNullOrEmpty(line))
{
lines.Add(line);
}
}
}
}
ファイルをロックしてアクセスを管理する必要がなくても、これが機能することを願っていますが、その方法はわかりません。サーバーがいつでも書き込みのためにファイルをロックできるようにしたいだけでなく、aspx WebページのC#コードで同じファイルを読み取れるようにしたいと考えています。
どんな助けでも大歓迎です。