for (int i = 0; i < 1000000; i++)
{
}
Пустые циклы для обеспечения временных задержек свидетельствуют о плохом понимании модели, управляемой СОБЫТИЕМ.
Windows CE имеет достаточно отличающийся обработчик событий от настольной версии Windows, которая, в то время как Windows допускает такой тип злоупотребления, Windows CE не будет.
Если вы впитываете много времени обработки в пустые циклы, такие как этот, вместо того, чтобы вызывать подпрограмму задержки, которая должным образом возвращает управление планировщику, то обработчик событий вызываться не будет. Если обработчик событий вызывается недостаточно часто, вы потеряете события. Существуют различные буферы, в которых хранятся некоторые из этих событий, но в зависимости от устройств ввода (клавиатура, сенсорный экран и т. Д.) Эти буферы могут быть неадекватными или несуществующими.
Кикер здесь в том, что обработчик событий на переносном устройстве не имеет большого буфера. Настольный компьютер имеет множество буферов для действий клавиатуры и мыши.
Есть много других отличий, но суть в том, что вам действительно нужно правильно освободить поток и правильно отложить, а не эти простые задержки пустых циклов.
Таймер Windows CE здесь был бы более уместным - запускайте таймер с помощью процедуры нажатия клавиш, и, когда она срабатывает, выполните необходимое действие. Это вернет управление обратно в пользовательский интерфейс, чтобы могли запускаться другие события.
Кроме того, имейте в виду, что, хотя Windows CE является многопоточным / многозадачным, лучше всего рассматривать вашу программу как выполняющуюся только по одному за раз. ОС и модель событий могут отправлять события вашего приложения (а не буферизировать их), и ваше приложение находится в этой процедуре задержки, игнорируя их. Вы не увидите других событий (включая нажатия клавиш), пока выполняется этот цикл. В зависимости от нагрузки и производительности системы эта задержка может длиться от нескольких миллисекунд до сотен миллисекунд - вы не можете рассчитывать на то, что она будет работать одинаково долго каждый раз, когда запускается, - еще одна причина для использования реальных таймеров.
-Adam