我无法减少我的字符串.我有一个接收传入数据的Windows窗体应用程序.到目前为止,我发现的所有示例都使用char来定位.我需要让它搜索整个 "*S"而不仅仅是它的一个字符.
我确实找到了一种方法来获得从那一点到结束的刺痛和修剪的索引(sting.remove).我的问题是我需要修剪开头.所以修剪索引方法可行,但我还没有找到如何做到这一点.
我所拥有的是一堆数据
"ok \r\n *S 38773 get 3042"
Run Code Online (Sandbox Code Playgroud)
我需要做的是找到*S and remove everything from the beginning to the *S.因为返回并不总是相同的我不能使用替换或删除方法.我无法预测*S之前会发生什么,其余数据是动态的.
任何关于如何从根本上修剪开始到"*S"的例子都会很精彩.谢谢.
我的程序的一部分使用事件处理程序来接收我的串行端口的数据.这个想法是当收到数据时,接收到的文本然后被添加到文本框(rx).我不习惯这个问题,但有些事情发生了变化,我无法弄清楚是什么.所以现在我正在重新审视这个问题的处理方式.
在winform形式加载期间,我做的最后一件事就是
if (!serialPort1.IsOpen)
{
serialPort1.Open();
serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
}
Run Code Online (Sandbox Code Playgroud)
然后我有事件处理程序
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
string indata1 = serialPort1.ReadExisting();
// rx.Text = " "; accidentally posted this. it was from trial and error.
rx.AppendText(Environment.NewLine + indata1);
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序时它停在那里rx.AppendText(Environment.NewLine + indata1);并给出错误
invalidoperationexception未处理:控制"从创建它的线程以外的线程访问.
从我能够阅读的建议我需要使用invoke或BeginInvoke.
我之前没有遇到任何问题,所以现在我无法理解为什么这是一个问题.从我一直在阅读的调用我只是不明白它.
有人可以帮我理解如何在我的情况下使用调用实例吗?或者可能告诉我另一种附加文本框的方法?
c# multithreading serial-port event-handling visual-studio-2010
我无法将文本文档硬编码到我的C#表单应用程序中.基本上我有网页HTML,我想填入文本框.我可以使用流式阅读器轻松完成此操作,或者将其永久写入字符串.环顾我可以添加到我的解决方案的不同元素是文本文件.
所以我正在寻找一种简单的方法来告诉我的应用程序读取文本文件或类似内容并将其放在文本框中.到目前为止,我无法弄清楚如何引用我添加到表单中的文本文件.
我想将此编码作为默认文档编写到exe中.我不想要一个外部文件,因此无法对其进行编辑,因此程序变得易于移植.
有关如何内部嵌入此文件并像类或类似的方式访问它的任何建议?
我正在尝试编写一个程序,该程序具有在程序激活后在指定时间后锁定计算机的功能.我遇到的问题是让剩余时间正常显示.我正在尝试使用datetimevs switch/if方案.根据指定的时间用户显示倒数计时器.更具体地说,我想做的是
1)用户指定分钟数2)分钟以编程方式转换为毫秒3,其中我卡住了毫秒转换并通过hh:mm:ss中的标签显示.
我花了几天时间搜索,我不太了解MSDN的例子,但是我还没有能够做到这一点.发现了大量从日期时间到毫秒数的例子.
因此,根据我对stringvs的理解StringBuilder,字符串构建器实际上会修改自身的实例,而字符串只会创建一个新实例.因此,如果我正确理解这一点,那么通过使用字符串方法来不断变化的变量,我基本上可以最终使用所有内存,直到计算机需要转储它来腾出空间.
我正在做的是使用事件处理程序来监视串行通信.我将接收数据并解析出来并将其显示在文本框中.事件处理程序使用string来实现此目的.考虑到更好的编程并且在我不需要时不用尽所有内存我正在尝试清理我的代码.
我开始使用字符串构建器进行编码,并开始获取StringBuilder不包含.contains方法的构建错误.
基本上我很好奇我是否应该独自一人?我应该采用不同的方法吗?我是否有正确的理解,这string将不可避免地让我失去记忆?
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
rx.AppendText(Environment.NewLine + indata);
string dataCheck = indata.ToUpper();
if (dataCheck.Contains("CONNECT") || indata.Contains("CONNECTED"))
{
cState.Text = "Connected";
connectLink();
}
if (dataCheck.Contains("NO CARRIER"))
{
cState.Text = "Disconnected";
disconnect();
}
dataCheck = null;
}
Run Code Online (Sandbox Code Playgroud)