別のアプリをEXECするサーバーアプリケーションがあり、その2番目のアプリがログファイルを作成し、サーバーがそれをWCF経由でクライアントに送信するようにします。
EXECアプリがログを更新している間、クライアントにログを読み取らせたい。
ストリーム(ログファイル)を返す操作コントラクトを使用しました。問題は、最初にストリームを送信したとき、ログがまだ空であり、サーバーEXECが書き込んだ「更新」がクライアントに表示されないことです。
サーバーコードは次のとおりです。
public Stream GetLog()
{
Stream stream = new FileStream(@"Log.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
return stream;
}
サーバーからのEXECは、単に「Log.txt」ファイルに書き込んでいます。
クライアントコードは次のとおりです。
public void SaveLog()
{
Stream stream = ServerProxy.GetLog();
StreamWriter writer = new StreamWriter("NEWLog.txt");
writer.AutoFlush = true;
StreamReader reader = new StreamReader(stream);
char[] buf = new char[100];
int count = 0;
while (count = reader.ReadBlock(buf, 0, 100) > 0)
{
writer.Write(buf, 0, count);
}
stream.Close();
writer.Close();
}
ログインリアルタイムでクライアントを更新するにはどうすればよいですか?