Я столкнулся со странной проблемой в Windows CE:
Запуск 3 EXE-файлов
1) Первый исполняемый файл выполняет некоторую работу каждые 8 минут, если не поступает сигнал о выходе. 2) Второй исполняемый файл выполняет некоторую работу каждые 5 минут, если не указано событие выхода. 3) Третий исполняемый цикл while работает, а в цикле while он выполняет некоторую работу в случайное время. Этот цикл while продолжается до тех пор, пока не появится сигнал о выходе.
Теперь это событие выхода является глобальным событием и может сигнализироваться любым процессом.
Проблема в Когда я запускаю First exe, он работает нормально, Запустите второй exe, он отлично работает, запустите третий exe, он отлично работает
Когда я запускаю все exes, запускается только третий exe, и никакие инструкции не выполняются в первом и втором.
Как только третий exe будет завершен, первый и второй начнут обработку. Может быть, цикл while в третьем exe занимает все циклы ЦП? Я не пробовал ставить Sleep, но думаю, что это поможет. Но ОС должна отдавать CPU всем процессам ... Какие-нибудь мысли ???





Поместите цикл while в третий EXE-файл в режим сна каждый раз при прохождении цикла и посмотрите, что произойдет. Даже если это не исправляет эту конкретную проблему, никогда не рекомендуется опрашивать с помощью цикла while, и даже использование Sleep внутри цикла является плохой заменой правильному таймеру.
Да, я думаю, это не лучшее решение. Я могу попробовать использовать таймер и посмотреть результаты ..
На MSDN я также читал, что CE допускает (менее) 32 процессов одновременно. (Однако переключение контекста происходит молниеносно ...). Некоторые уже заняты системными службами.
Интересно. Однажды я взял на себя управление приложением .NET CF, которое создавало новые процессы внутри цикла while. Я знал, что это было супер-плохо, но вот дополнительная информация о том, почему.
(Из памяти) Процессы в Windows CE выполняются до завершения, если нет запущенных процессов с более высоким приоритетом, или они выполняются в течение своего временного интервала (100 мс), если выполняются другие процессы с таким же приоритетом. Я не уверен, дает ли Windows CE процессу с активным / приоритетным окном небольшое повышение приоритета (точно так же, как настольная Windows) или нет.
В вашей ситуации первые два процесса испытывают нехватку процессорного времени, поэтому они никогда не запускаются, пока не завершится третий процесс. Вот несколько способов решить эту проблему:
Еще одна вещь, которую следует проверить, - это то, что третий процесс действительно выполняет свои задачи вовремя и не привязывает ЦП к попыткам нормально выполнять свои задачи.
Не уверен, что квантование времени работает так же в Windows CE, но могу ошибаться