我有一个C#日志查看器应用程序,可以从服务器读取数据。 日志数据以“ hh:mm:ss:dddd”格式的时间开始。 如您所见,我已经附加了日志的起始字符串,并且消除了一些字节数据。这种消除是不一致的,我无法找到原因。 我的读取数据的代码如下:
private async Task ReadMessages()
{
Receiver = tcp.GetStream();
if (Receiver.CanRead && tcp.Available > 0)
{
try
{
byte[] byDataIn = new byte[tcp.Available];
int response = await Receiver.ReadAsync(byDataIn,byDataIn.Length);
muQueueIn.WaitOne();
//add the data to the queue
responseData = Encoding.ASCII.GetString(byDataIn);
int pos = responseData.IndexOf("\r\nGUI");
if (pos > 0 && byDataIn[0] != '\0')
{
string strSubstring1 = responseData.Substring(0,pos+2);
qqueueIn.Enqueue(strSubstring1);
Array.Clear(byDataIn,byDataIn.Length);
}
muQueueIn.ReleaseMutex();
Thread.Sleep(50);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
}
我有一个单独的线程,该线程从队列中读取数据并显示在用户界面中
public String GetDataFromServer()
{
muQueueIn.WaitOne();
if (qqueueIn.Count > 0)
{
//muQueueIn.WaitOne();
var str = qqueueIn.Dequeue();
//muQueueIn.ReleaseMutex();
return str.ToString();
}
muQueueIn.ReleaseMutex();
return String.Empty;
}
日志输出:
14:40:08.3820 //correct
4:40:08.3840 //1 is not printed
:40:08.3940 //14 is not printed and so on
4:40:08.4420
14:40:08.4290
0:08.4170
40:08.4070
:40:08.4560
40:08.4660
0:08.4790
14:40:08.5070
14:40:08.4930
4:40:08.5160
:40:08.5320
40:08.5410
:08.5610
0:08.5490