C # Порядок обработки событий - PullRequest
0 голосов
/ 17 июня 2011

Сценарий - это событие в буфере, которое информирует заинтересованные классы о наличии данных, которые необходимо собрать. Событие запускается, как только новые данные записываются в буфер. Когда это срабатывает, делегат для события (в заинтересованном классе) начинает чтение данных из буфера.

Мой вопрос: если событие было запущено снова (до того, как метод завершит чтение всех данных из буфера), будет ли метод чтения сброшен или событие будет ждать, пока метод завершит чтение данных перед вызовом это снова?

Ответы [ 3 ]

2 голосов
/ 17 июня 2011

Событие может быть запущено снова до завершения чтения метода, только если оно было запущено в другом потоке. Затем обработчики событий (по умолчанию) будут вызываться снова в этом отдельном потоке. Нет понятия, что существующий метод «сбрасывается», и он не будет ждать окончания работы уже запущенных обработчиков, прежде чем снова запускать.

Конечно, вы могли бы потенциально изменить работу обработчиков или запуск события - возможно, гарантируя, что обработчики событий вызываются только из одного потока с какой-то очередью событий. Мы не можем сказать, подходит ли это для вашей ситуации.

0 голосов
/ 17 июня 2011

Если вы не добавите Application.DoEvents() в свой код (что ужасно), ваше событие не будет прервано.

В сценарии с многопоточностью существует возможность их параллельной работы. Я не использую несколько потоков и событий одновременно, поэтому я не могу особо сказать об этом, но кажется, что Джон хорошо это охарактеризовал своим ответом.

0 голосов
/ 17 июня 2011

Кроме того, он будет выполнять его параллельно (параллельно), если в отдельных потоках - в противном случае выполнение будет блокировать в любом случае.

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