DataReceviedHandler Ошибка, возможно, проблема с потоком - PullRequest
0 голосов
/ 29 августа 2011

В DataReceviedHandler последовательного порта я проверяю, установлен ли bool.Если нет, я отправляю следующий блок на последовательный порт.

Логическое значение устанавливается событием класса.На рисунке вы можете видеть, что программа переходит в оператор if, хотя bool имеет значение false.Это проблема потока?Что я мог сделать?

занятый кот http://img163.imageshack.us/img163/3324/boolh.png

Если попытался это:

                lock (_syncLock)
                {
                    if (_wrEEPROM)
                    {
                        //Hier müssen die weiteren 128er Blöche übertragen werden
                        SerialControl.Port.Write(_yTestMod.CreateYModemBlock(wrEE.EEPROMar, _eepromBlockIndex), 0,
                                                 _yTestMod.CreateYModemBlock(wrEE.EEPROMar, 2).Length);
                        _eepromBlockIndex += 1;
                    }
                }

и это в случае:

        lock (_syncLock)
        {
            _eeprom = false;
            _logger = false;
            _wrEEPROM = false;
        }

но он все еще не работает.

1 Ответ

1 голос
/ 29 августа 2011

к замку:

создать приватную переменную поля:

private Object _syncLock = new Object();

и затем везде, где вы устанавливаете или читаете свой «Флаг» - переменное использование

lock(_syncLock)
{
  myFlag = true; // whatever
}

или

lock(_syncLock)
{
  return myFlag;
}

в вашем случае оберните обработчик дырок для события и код, показанный выше, в такой замок для начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...