【发布时间】:2014-01-30 10:08:29
【问题描述】:
这是我下面的程序,它从端口读取数据以获取呼叫者 ID 数据。但我想一旦它得到它应该停止监听端口并读取更多数据的数字。并执行异常编写的任务。但是,即使当我强行尝试退出事件并抛出异常时它也不起作用,并且当我设置超时时它也不会离开......我该怎么办请告诉我。
bool _continue = true;
string message = string.Empty;
string number = string.Empty;
private void serialPort_DataNewReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
if (_continue)
{
SerialPort sp = (SerialPort)sender;
message = sp.ReadExisting();
if (message.Contains("MESG"))
{
string[] strFirstStep = Regex.Split(message, "\r\nNMBR =");
string[] strLastStep = Regex.Split(strFirstStep[1], "\r\n");
number = strLastStep[0];
_continue = false;
}
}
else throw new TimeoutException();
}
catch (TimeoutException t)
{
bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.RunWorkerAsync();
}
}
【问题讨论】: