首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于Application.ProcessMessages请问

2012-09-19 
关于Application.ProcessMessages请教procedure PDelay(ms: Integer)varbeginTick, endTick :Integerbeg

关于Application.ProcessMessages请教
procedure PDelay(ms: Integer);
var
  beginTick, endTick :Integer;
begin
  beginTick := GetTickCount();

  while True do
  begin
  Application.ProcessMessages;
  endTick :=GetTickCount;
  Sleep(1);

  if (endTick - beginTick) > mS then Break;
  end;
end;

这是一个类似sleep的函数,以前一直用的好好的,前两天有个程序用了这个,每次运行到Application.ProcessMessages;就会出现BUG,BUG提示:
Project ReadDataPrj.exe raised exception class EAccessViolation with message 'Access violation at address 004AEC03 in module'ReadDataPrj.exe'. Write of address C8EOF23F'. Process stopped, User Step or Run to continue;
我想请教下这是怎么回事?

 

[解决办法]
那是Console程序么?
[解决办法]
循环中的Sleep(1);纯属多余。
[解决办法]
如果不是在线程中运行这段代码,应该是没问题的,那么问题应该出在别处,检查一下你处理消息或者事件的代码在什么位置,在Delphi中按F8,然后打开CPU查看窗口,CTRL+G,输入$004AEC03,然后往上查看,看函数或者过程名称是在那里,然后对应看源代码.
[解决办法]
我用的函数和你这个一样,一直在用,没问题

热点排行