我有一个WinForm
应用程序从serail / telnet终端获取输出
由于历史决定,所有输出都会转到像这样的列表
static List<string> BufferLog = new List<string>();
serialInputData += serialPort.ReadExisting();
BufferLog.Add(serialInputData);
现在我想添加另一个函数来阻塞线程直到句子{一个单词也可能} 我的想法是做
之类的事情if (IsWaitForCustomMessage)
{
while(IsNotTimeout)
{
List<string> waiterList = serialInputData.Split('\n').ToList();
if (waiterList.Exists(x => x.Contains("SomeSentenc")) return true ;
}
return false;
}
假设serialInputData
不包含一行但多行
我想知道的是,有没有更快的方法来检查这些线?
对我而言,另一种相对简单的方法是使用stringBuilder
,我更愿意尝试其他方式
BufferLog
从List<string>
更改为其他类型,那么也是您的体验吗?
答案 0 :(得分:1)
最后一个问题 - 是的,我使用StringBuilder而不是List(字符串),因为它更适合你正在做的事情(用增量输入构建一个字符串)。只是整洁而不是更好的表现。
我想你是在问如何等待StringBuilder包含特定的字符序列?有没有什么理由你不能只使用IndexOf而不是把它分成几行?这样可以防止在内存中移动字符串的速度非常快。