Я добавил пару точек останова в своем коде, чтобы отслеживать значение двух переменных при достижении. Приложение в основном получает поток данных со скоростью 9600 бод от последовательного порта, сгенерированный микроконтроллером, работающим на частоте 500 Гц, и должен фильтровать сообщения в соответствии с определенными правилами «если» и «если еще», чтобы вырезать символы заголовка и адресовать их другие переменные для использования расчета. Вот код:Visual Studio debug break points freezing app
class Stripper
{
public void Distri (string inComing, out string param1, out string param2, out string param3, out string param4)
{
string currentRes="";
string currentMot = "";
string temperature="";
string numRPM="";
string f = inComing;
if (inComing.Length < 6)
{
f = ">123456<";
}
char firstChar = f[0];
char lastChar = f[f.Length - 2];
bool test1 =(firstChar.Equals('>'));
bool test2 =(lastChar.Equals('<'));
int messLenght = f.Length;
try
{
if (test1 == true && test2 == true && messLenght <= 10)
{
f = f.Replace("<", "");
f = f.Replace(">", "");
if (f[0] == 'I')
{
string _currentRes = f;
_currentRes = _currentRes.Replace("I", "");
currentRes = _currentRes;
}
else if (f[0] == 'M')
{
string _currentMot = f;
_currentMot = _currentMot.Replace("M", "");
currentMot = _currentMot;
}
else if (f[0] == 'T')
{
string _temperature = f;
_temperature = _temperature.Replace("T", "");
temperature = _temperature;
}
else if (f[0] == 'N')
{
string _numRPM = f;
_numRPM = _numRPM.Replace("N", "");
numRPM = _numRPM;
}
else
{ }
}
else
{ }
}
catch (System.Exception)
{
throw;
}
param1 = currentRes;
param2 = temperature;
param3 = numRPM;
param4 = currentMot;
}
}
}
Проблема я столкнулся довольно странно, и в какой-то момент я был полностью потерян. В основном, с точками разрыва, активными в переменных «f» и «inComing», приложение сразу же не отвечало на запросы и, чтобы заставить его работать, мне пришлось уменьшить скорость потока от серийного до 1/100, вводя задержки. Без точек останова приложение может принимать полный поток данных без каких-либо проблем. Возможно, этот опыт может помочь другим людям в подобных ситуациях. Похоже, что точки останова замедляют процесс довольно резко. Я не думаю, что это имеет какое-то отношение к компьютеру. Я использую это монстр с 16 Гб оперативной памяти и 2,4 ГГц процессором i5. Мне интересно, почему это происходит, и есть ли способ избежать такой проблемы, а не использовать точки останова?
вам может создать Logfile как альтернативу точкам останова – WiiMaxx
Спасибо за совет. Это, безусловно, отличная альтернатива, но не дает реального видения происходящего. Тем не менее, я не думал об этом раньше, и я попробую. – FeliceM
вы также можете написать свое окно вывода в VS, но я не знаю, как это сделать. Теперь я могу это сделать: D – WiiMaxx