我猜這並不因爲StreamReader的是非線程安全的工作,(不知道HOWTO解決這個問題,谷歌是沒有幫助)StreamReader線程安全問題?可能?
反正我一直在試圖弄清楚究竟什麼錯這個代碼在80%的時間內工作,其他時候它無法解析傳入的數據包,並且會丟棄它們。
這是一個類似於http的tcp服務器的虛擬寫入。它的工作方式與http數據包完全相同,但「CONTENT-LENGTH」標題告訴它數據包數據(有效負載)的長度。這是問題發生的地方。任何人都可以向我建議如何改善這一點並解決這個問題?因爲我完全失去了。
void InternalStart()
{
bool continueWhile = true;
while (continueWhile)
{
if (SR.EndOfStream)
{
continueWhile = false;
break;
}
if (par_ReadStatus != ReadStatusEnum.WaitingForPayload)
{
int charCode = SR.Peek();
if (charCode == -1)
{
continueWhile = false;
break;
}
string outputLine = "";
outputLine = SR.ReadLine();
ReadLine(outputLine);
}
else if (par_ReadStatus == ReadStatusEnum.WaitingForPayload)
{
int length = int.Parse(par_ParsingPacket.Attributes["CONTENT-LENGTH"]);
char[] array = new char[length];
for (int i = 0; i < length; i++)
{
array.SetValue(Convert.ToChar(SR.Read()), i);
}
string payload = new string(array);
ReadLine(payload);
}
}
if (ReadEnd != null)
{
ReadEnd();
}
}
您能否提供有關您遇到的錯誤的更多詳細信息? – 2012-02-05 07:29:01
[StreamWriter多線程C#]的可能重複(http://stackoverflow.com/questions/19304209/streamwriter-multi-threading-c-sharp) – Liam 2015-04-28 14:13:34