我在一个子线程中创建一个进程
var
  lpStartupInfo: TStartupInfo;
  lpProcessInformation: TProcessInformation;
  ProcessHandle: cardinal;
begin
  FillChar(lpStartupInfo, SizeOf(TStartupInfo), 0);
  FillChar(lpProcessInformation, SizeOf(TProcessInformation), 0);
  ProcessHandle:= CreateProcess(nil,PChar(C:\Program Files\Windows Media Player\wmplayer.exe'),nil,nil,False,
                  CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS,
                  nil,nil,lpStartupInfo,lpProcessInformation);
  if ProcessHandle > 0 then
    WaitForSingleObject(ProcessHandle, INFINITE);我想请教下,当子线程在wait single的时候,我结束主程序。那么子线程仍旧在wait,是否有方法让wait中断。
貌似setevent(ProcessHandle)没用。555

解决方案 »

  1.   

    强制终结线程
    TerminateThread
      

  2.   

    ProcessHandle对象被激发,也就是结束ProcessHandle对应的进程
      

  3.   

    能不能在不结束ProcessHandle对应的进程的情况下终止线程wait ProcessHandle呢。
      

  4.   

    INFINITE(表示无穷等待),改为一个比较合适的时间,如果超出这个时间ProcessHandle没有被激发,该函数一样会返回,如果返回失败,掉用GETLASTERORR获取信息,根据其处理
      

  5.   

    不是有个得到当前系统进程列表的函数吗,通过枚举所有进程的pid,这样可以在等待的时候控制中断了。就是不知道执行效率怎样。