Delphi多线程应用程序内置于Vista中,不能在XP中运行

时间:2010-08-08 16:26:12

标签: delphi windows-vista windows-xp serial-port

我真的很难过。

我正在vista上运行delphi 2007。我已经构建了许多应用程序并在XP中运行它们没有问题。这个最新的应用程序必须使用线程。我很确定我的代码是正确的。它在Vista上运行良好,但是当我在XP上运行它(尝试多台PC)时,我的程序似乎滞后(os的32位,XP sp3和Vista sp1,dotnet v2)。最好的例子是,如果我拔下串口,我的com将继续运行等。

我在我的xp机器上安装delphi,并在delphi运行时运行我的程序。就像我在Vista中构建的exe中运行它一样。它跑得很好。关闭delphi,并且comport开始再次滞后。

如果我拔下并重新插上闪存驱动器,则com会再次赶上。

我想在我的基于xp的机器上构建应用程序,但是有一百万个第三方组件,这使得它成为一个真正的设置任务。

哦,我甚至用主线程和一个comport线程构建了一个简单的应用程序。同样的问题。所有的comthread都会从comport中获取数据。甚至没有显示它,我在后台使用串口监视器来检查滞后。

欢迎任何建议。

OK快速编辑:XP pc是新建的。我打开了msn messenger,程序运行正常。我显然错过了一些设置......

2 个答案:

答案 0 :(得分:4)

如果您在线程中使用Sleep(因此我对您的问题发表评论/查询),您应该使用timeBeginPeriod来表明您所需的分辨率。正如您已经发现的那样,无论您在何处称呼它都无关紧要;可以是主线程甚至完全不同的应用程序。

在embarcadero论坛上查看此thread,当然还有MSDN上的documentation(备注)。

答案 1 :(得分:1)

您的操作系统是否安装在两台不同的PC上? 我猜你的一台计算机有一个真正的双核处理器(带有XP的处理器),而另一台(带有Vista的处理器)有一个单核处理器。有时,多线程应用程序会在真正的多核处理器上运行时显示出问题。 Delphi调试器有时会改变CPU亲和性,因此它可以在调试器上运行,但不能在调试器外部运行。 另一种检查的可能性:在XP下尝试您的软件,只设置一个CPU的亲和力。 我之前见过。但它可能还有别的,因为你说你已经在多台电脑上试过你的SW。