请各位进来给我解决这个问题,跪谢!!没解决我就一直在线等。解决为止(100分)

  • 主题发起人 主题发起人 54weige
  • 开始时间 开始时间
我再顶上去。。。
 
继续顶。。。。。。。ddd
 
顶上去!``1
 
再顶上去!1`
 
线程加好了,还是StartTimer(10000);循环一次啊。
 
我求你们了,行不行?解答下。
 
我再次顶上去。
 
你到底要做什么呢?
MainFuck循环做什么?
如果让MainFuck进入死循环Timer就不会触发了.因为你的主线程已经死掉了.
我猜猜你的MainFuck是想循环去检测什么东西吧?
那你可以通过事件Event或者自定义的消息去触发调用MainFuck啊.而不用进入死循环等待.
问一句MainFuck到底要Fuck什么?
 
运用线程就不会了。我让MAINFUCK执行啥不能说哦大哥,实在抱歉,我花钱解决都行。100块,谁解决我有网转的。
 
那我打个比方,比如你的MainFuck执行的是从端口1234接收到字符'F'
可以这样,如下:
const
PWM_ReceiveChartFuck = WM_USER + 1;//在主程序中自定义一个消息
//接下来再写个类,从TThread继承.
type
TReadThread = class( TThread )
protected
procedure Execute; override;
public
CloseEvent : Handle
end;
....
var
ReadThread : TReadThread: //类的实例.
CloseEvent : THandle;

...
//TReadThread
procedure TReadThread.Execute;
var
receiveChar : TChar;
begin
While True do
begin
if WAIT_TIMEOUT <> WaitForSingleObject(CloseEvent,0)
break; //退出线程
//写上你的检测代码,将端口1234上收到的字符放到receiveChar中
if (receiveChar = 'A') then
PostMessage(Application.Handle,PWM_ReceiveChartFuck,0,0);//注意这里的Application.Handle是指进程的句柄.
end;

end;

//EXE
begin
CloseEvent := nil;
ReadThread := nil;
CloseEvent := CreateEvent(nil,FALSE,FLASE,nil);
if (nil = CloseEvent) then exit;//异常
ReadThread := TReadThread.Create( True)
if (nil = ReadThread) then exit;//异常
ReadThread.CloseEvent := CloseEvent;
ReadThread.Resume;
......

end;
 
雪中送炭啊!
 
在你的消息泵指定的回调函数中加上一个判断
if (PWM_ReceiveChartFuck = msg.msg) then
MainFuck();
 
注意,进程结束时要把前面两个实例句柄释放
SetEvent(CloseEvent);
if (WaitForSingleObject(CommWatchThread.Handle, 1000) = WAIT_TIMEOUT) then
ReadThread.Terminate;
ReadThread.Free;
ReadThread := nil;
CloseHandle(CloseEvent);
CloseEvent := nil;
 
好的,我试试您QQ多少呢。
 
if (PWM_ReceiveChartFuck = msg.msg) then
MainFuck();
注意,进程结束时要把前面两个实例句柄释放
SetEvent(CloseEvent);
if (WaitForSingleObject(CommWatchThread.Handle, 1000) = WAIT_TIMEOUT) then
ReadThread.Terminate;
ReadThread.Free;
ReadThread := nil;
CloseHandle(CloseEvent);
CloseEvent := nil; 加在什么地方呢,可否详细点把我最上面的代码加进去呢。大哥。
 
while(GetMessage(Msg,0,0,0))do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
//加在这里.
end.
 
谢啊!!!
 
identiffer:wm_user 出错很多。
 
后退
顶部