Многопоточное приложение Delphi, встроенное в Vista и не работающее в XP - PullRequest
4 голосов
/ 08 августа 2010

Я действительно в замешательстве.

Я использую Delphi 2007 на Vista.Я создал много приложений и запускаю их в XP без проблем.Это последнее приложение должно было использовать темы.Я уверен, что мой код правильный.На Vista она работает нормально, но когда я запускаю ее на XP (пробовал несколько компьютеров), моя программа отстает (32-разрядная ОС, XP sp3 и Vista sp1, dotnet v2).Наилучший пример - если я отключу последовательный порт, мои комм будут продолжать работать и т. Д.

Я устанавливал delphi на мою машину xp и запускал программу во время работы delphi.Как в я запустил его из встроенного в Vista.Тогда все прошло нормально.Закройте delphi, и компорт снова начнет зависать.

Если я отключу и снова подключу флэш-накопитель, com снова будет зависать.

Я хочу создать приложение на своем компьютере на базе xp, но у меня около миллиона сторонних компонентов, что делает его реальной задачей для установки.

О, к сожалению, я создал простое приложение столько основной поток и поток компорта.Та же проблема.Все, что сделает comthread - это извлечет данные из компорта.Даже не отображая его, я использовал монитор последовательного порта в фоновом режиме, чтобы проверить наличие задержки.

Любые предложения приветствуются.

ОК, быстрое редактирование: компьютер XP только что собран.Я открыл MSN Messenger, и программа работает нормально.Я явно пропускаю некоторые настройки ...

Ответы [ 2 ]

4 голосов
/ 08 августа 2010

Если вы используете Sleep в своих темах (отсюда мой комментарий / запрос к вашему вопросу), вы должны использовать timeBeginPeriod, чтобы указать желаемое разрешение.Как вы уже узнали, не имеет значения, где вы это называете;может быть основной веткой или даже совершенно другим приложением.

См. эту ветку на форумах Embarcadero и, конечно, документацию (замечания) на MSDN.*

1 голос
/ 08 августа 2010

Ваша ОС установлена ​​на двух разных ПК?Я предполагаю, что один из ваших компьютеров имеет настоящий двухъядерный процессор (тот, что с XP), а другой (тот, что с Vista) имеет одноядерный процессор.Иногда многопоточное приложение выявляет свои проблемы при работе на настоящем многоядерном процессоре.Отладчик Delphi иногда меняет привязку к процессору, чтобы он мог работать на отладчике, но не вне его.Еще одна возможность проверить: попробуйте ваше программное обеспечение под XP с настройкой соответствия только одному процессору.Я видел это раньше.Но, скорее всего, это что-то еще, поскольку вы сказали, что пробовали свой SW на нескольких ПК.

...