-
-
[求助][求助]写了一个很艰难的程序,多线程同步延迟导致线程无法正常退出(delphi 线程错误5)
-
发表于:
2013-7-6 17:50
6787
-
[求助][求助]写了一个很艰难的程序,多线程同步延迟导致线程无法正常退出(delphi 线程错误5)
写的很艰难
大概描述下
程序主体是一个DLL
被其他进程注入到进程A
热键HOME的时候可以呼出界面。
然后在按钮1事件之后启动三个线程,
每个线程都要用到两个资源
为了保证同步我使用了 临界区。
因为调用很频繁
为了保证 CPU不卡,在临界区代码使用了delay1()。
procedure Delay1(mS :integer);
var
beginTick ,endTick :Integer;
begin
beginTick :=GetTickCount;
while True do
begin
Application.ProcessMessages;
end
Tick :=GetTickCount;
sleep(1);
if (endTick - beginTick)>mS then Break;
end;
end;
然后 在按钮2事件之后,停止3个线程,
为了保证线程正常退出 我在 多处代码段 添加了
if Terminated then
begin
break;
end;
我的调用临界资源代码是
EnterCriticalSection(Myps); //进入临界区
try
proone(@get.z);
if Terminated then
begin
break;
end;
Delay1(15);
finally
LeaveCriticalSection(Myps); //离开临界区
end;
错误的提示 是 thread ERROR:拒绝访问 (5);
查过资料 确认应该是 临界区的问题。
这个程序写的好艰难啊
如何处理 多线程 临界区正常的 退出,不要出现 线程错误这样的问题了
感谢了 。
[课程]FART 脱壳王!加量不加价!FART作者讲授!