亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? uathread.~pas

?? 基于Midas 技術的多層應用開發包第二版(帶開發文檔)
?? ~PAS
?? 第 1 頁 / 共 2 頁
字號:
    Terminate;
    WaitFor;
   end;
  if FHandle <> 0 then CloseHandle(FHandle);
  inherited;
  RemoveThread;
end;

procedure TUAEventThread.DoTerminate;
begin
  if Assigned(FOnTerminate) then
    Synchronize(CallTerminate);
end;

function TUAEventThread.GetPriority: TThreadPriority;
var
  P: Integer;
  I: TThreadPriority;
begin
  P := GetThreadPriority(FHandle);
  Result := tpNormal;
  for I := Low(TThreadPriority) to High(TThreadPriority) do
    if Priorities[I] = P then
      Result := I;
end;

procedure TUAEventThread.SetPriority(Value: TThreadPriority);
begin
  SetThreadPriority(FHandle, Priorities[Value]);
end;

procedure TUAEventThread.Synchronize(Method: TThreadMethod);
begin
  FSynchronizeException := nil;
  FMethod := Method;
  SendMessage(ThreadWindow, CM_EXECPROC, 0, Longint(Self));
  if Assigned(FSynchronizeException) and not Owner.FHandleExceptions then
    raise FSynchronizeException;
end;

procedure TUAEventThread.SetSuspended(Value: Boolean);
begin
  if Value <> FSuspended then
   if Value then
     Suspend
   else
     Resume;
end;

procedure TUAEventThread.Suspend;
begin
  FSuspended := True;
  SuspendThread(FHandle);
end;

procedure TUAEventThread.Resume;
begin
  if ResumeThread(FHandle) = 1 then
    FSuspended := False;
end;

procedure TUAEventThread.Terminate;
begin
  FTerminated := True;
end;

function TUAEventThread.WaitFor:Cardinal;
var
  Msg: TMsg;
  H: THandle;
begin
  H := FHandle;
  if GetCurrentThreadID = MainThreadID then
    while MsgWaitForMultipleObjects(1, H, False, INFINITE, QS_SENDMESSAGE) = WAIT_OBJECT_0 + 1 do
      PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE)
  else
    WaitForSingleObject(H, INFINITE);
  GetExitCodeThread(H, Result);
end;


function TUAEventThread.CreateThread: TUAEventThread;
begin
  Result := TUAEventThread.Create(Owner);
  try
    Result.Priority := Priority;
    Result.FOnTerminate := FOnTerminate;
    Result.FOnExecute := FOnExecute;
    Result.FOnException := FOnException;
  except
    Result.Free;
    raise;
  end;
end;               

function TUAEventThread.RecreateThread: TUAEventThread;
begin
  TerminateThread(Handle, 0);
  Result := CreateThread;
  Free;
end;

procedure TUAEventThread.CallTerminate;
var
  FreeOwnerOnTerminate: Boolean;
begin

  FreeOwnerOnTerminate := Owner.FFreeOwnerOnTerminate;

  if Assigned(FOnTerminate) and not (csDestroying in Owner.ComponentState) then
   if Owner.FHandleExceptions then
    try
      FOnTerminate(Owner);
    except
      if Assigned(FOnException) and not (csDestroying in Owner.ComponentState) then
        CallException;
    end
   else
     FOnTerminate(Owner);


  if FreeOwnerOnTerminate then
   with Owner do
    if Owner <> nil then
    begin
      FThread := CreateThread;
      Owner.Free;
    end;
    
end;

procedure TUAEventThread.CallException;
begin
  if not (csDestroying in Owner.ComponentState) and Assigned(FOnException) then
    FOnException(Owner);
end;

procedure TUAEventThread.Execute;
begin
  if Assigned(FOnExecute) and not (csDestroying in Owner.ComponentState) then
   if Owner.FHandleExceptions then
    try
      FOnExecute(Owner);  // ????
    except
      if Assigned(FOnException) and not (csDestroying in Owner.ComponentState) then
        Synchronize(CallException);
    end
   else
     FOnExecute(Owner);
end;


{ TUACustomThread }
constructor TUACustomThread.Create(aOwner: TComponent);
begin
  inherited;
  FDesignSuspended := True;
  FHandleExceptions := True;
  FThread := TUAEventThread.Create(Self);
end;

destructor TUACustomThread.Destroy;
begin
  if FThread.FRunning then Terminate(True);
  FThread.Free;
  inherited;
end;

procedure TUACustomThread.Loaded;
begin
  inherited;
  SetSuspended(FDesignSuspended);
end;

procedure TUACustomThread.DoWaitTimeoutExpired;
begin

  Terminate(True);
  if Assigned(FOnWaitTimeoutExpired) then
    //FOnWaitTimeoutExpired(Self);
    FOnWaitTimeoutExpired(Self)
  else
  begin
    //----- add by vinson zeng 2004-09-10...etc
    //在應用服務器中,如果有事務執行超時,必須寫入日志,前提是沒有上面的Event process
    

  end;

end;


function TUACustomThread.Execute: Boolean;
var
  CurrentThreadHandle: THandle;
  TempWaitTimeout, WaitResult: DWord;
begin
  Terminate(True);
  if FFreeOwnerOnTerminate then
    FThread.FreeOnTerminate := True;
  FThread.Resume;
  
  Result := True;
  if FWaitThread then
   begin
    CurrentThreadHandle := FThread.FHandle;
    if FWaitTimeout = 0 then
      TempWaitTimeout := INFINITE
    else
      TempWaitTimeout := FWaitTimeout;
    repeat
      WaitResult := MsgWaitForMultipleObjects(1, CurrentThreadHandle, False, TempWaitTimeout, QS_ALLINPUT);
      if WaitResult = WAIT_TIMEOUT then
       begin
        Terminate(True);
        if Assigned(FOnWaitTimeoutExpired) then
          FOnWaitTimeoutExpired(Self);
        Result := False;
        Exit;
       end;
      Application.ProcessMessages;
    until (WaitResult <> WAIT_OBJECT_0 + 1) or (csDestroying in ComponentState) or Application.Terminated;
   end;
   
end;

procedure TUACustomThread.Suspend;
begin
  FThread.Suspend;
end;

procedure TUACustomThread.Resume;
begin
  FThread.Resume;
end;

procedure TUACustomThread.Synchronize(Method: TThreadMethod);
begin
  if not (csDestroying in Owner.ComponentState) then
    FThread.Synchronize(Method);
end;

procedure TUACustomThread.InternalSynchronization;
begin
  if not (csDestroying in Owner.ComponentState) then
    FSyncMethod(FSyncParams);
end;

procedure TUACustomThread.SynchronizeEx(Method: TNotifyEvent; Params: Pointer);
begin
  if not (csDestroying in Owner.ComponentState) and
     Assigned(Method) then
  begin
    FSyncMethod := Method;
    FSyncParams := Params;
    FThread.Synchronize(InternalSynchronization);
  end;
end;

procedure TUACustomThread.Terminate(Imediately: Boolean);
begin
  if not Assigned(FThread) then Exit;

  if Imediately then
    FThread := FThread.RecreateThread
  else
    FThread.Terminate;
end;

function TUACustomThread.WaitFor:Cardinal;
begin
  Terminate(True);
  Result := FThread.WaitFor;
end;


function  TUACustomThread.GetHandle: THandle;
begin
  Result := FThread.FHandle;
end;

function  TUACustomThread.GetReturnValue: Integer;
begin
  Result := FThread.ReturnValue;
end;

procedure TUACustomThread.SetReturnValue(Value: Integer);
begin
  FThread.ReturnValue := Value;
end;


function TUACustomThread.GetPriority: TThreadPriority;
begin
  Result := FThread.Priority;
end;

procedure TUACustomThread.SetPriority(Value: TThreadPriority);
begin
  FThread.Priority := Value;
end;

function TUACustomThread.GetSuspended: Boolean;
begin
  if csDesigning in ComponentState then
    Result := FDesignSuspended
  else
    Result := FThread.Suspended;
end;

procedure TUACustomThread.SetSuspended(Value: Boolean);
begin
  if csDesigning in ComponentState then
    FDesignSuspended := Value
  else
   begin
    FDesignSuspended := Value;
    FThread.Suspended := Value;
   end; 
end;

function TUACustomThread.GetRunning: Boolean;
begin
  Result := FThread.FRunning;
end;

function TUACustomThread.GetTerminated: Boolean;
begin
  Result := FThread.FTerminated;
end;

function  TUACustomThread.GetThreadID: THandle;
begin
  Result := FThread.ThreadID;
end;


function  TUACustomThread.GetOnException: TNotifyEvent;
begin
  Result := FThread.FOnException;
end;

procedure TUACustomThread.SetOnException(Value: TNotifyEvent);
begin
  FThread.FOnException := Value;
end;

function  TUACustomThread.GetOnExecute: TNotifyEvent;
begin
  Result := FThread.FOnExecute;
end;

procedure TUACustomThread.SetOnExecute(Value: TNotifyEvent);
begin
  FThread.FOnExecute := Value;
end;

function  TUACustomThread.GetOnTerminate: TNotifyEvent;
begin
  Result := FThread.FOnTerminate;
end;

procedure TUACustomThread.SetOnTerminate(Value: TNotifyEvent);
begin
  FThread.FOnTerminate := Value;
end;

initialization
  InitializeCriticalSection(ThreadLock);

finalization
  DeleteCriticalSection(ThreadLock);

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一区二区三区全黄| 欧美一区二区三区四区在线观看| 日韩国产高清影视| 一区二区激情小说| 一区二区三区日韩欧美精品| 亚洲欧洲精品一区二区精品久久久| www日韩大片| 久久久久久久久久久黄色| 精品欧美一区二区久久| 精品国产123| 国产欧美一区二区精品忘忧草 | 捆绑变态av一区二区三区| 日韩激情一区二区| 麻豆精品蜜桃视频网站| 国产一区二区在线视频| 岛国精品在线播放| 92国产精品观看| 欧美日韩国产a| 欧美一级高清大全免费观看| 久久综合色8888| 国产精品你懂的在线欣赏| 一区二区三区高清| 奇米影视一区二区三区小说| 国产剧情一区二区| 在线观看免费视频综合| 欧美一级黄色片| 欧美激情中文不卡| 亚洲高清免费在线| 国产乱人伦精品一区二区在线观看 | 久久久www免费人成精品| 国产精品欧美久久久久无广告 | 久久精品理论片| 国产精品2024| 欧美亚洲图片小说| 亚洲精品一区二区在线观看| 亚洲色图在线视频| 另类欧美日韩国产在线| 色综合久久综合网| 久久夜色精品国产噜噜av| 亚洲欧美日韩久久精品| 麻豆国产精品777777在线| 91一区二区在线| 日韩片之四级片| 亚洲一区二区三区在线看| 国内精品国产成人国产三级粉色| 日本精品一级二级| 国产三级欧美三级| 日韩1区2区日韩1区2区| 91麻豆视频网站| 精品成人免费观看| 日日骚欧美日韩| 色综合色狠狠天天综合色| 亚洲精品在线网站| 日韩精品免费专区| 91国在线观看| 最新不卡av在线| 国产精品18久久久久久久久| 4438x亚洲最大成人网| 综合色中文字幕| 国产v日产∨综合v精品视频| 日韩精品一区二区三区swag | 欧美一区二区视频在线观看2020| 国产精品国产三级国产aⅴ入口| 精品一区二区在线看| 91国产丝袜在线播放| 国产精品乱码人人做人人爱 | 日韩成人一级大片| 欧美性xxxxxx少妇| 一区二区三区免费网站| 日韩欧美久久久| 婷婷中文字幕一区三区| 在线观看亚洲成人| 亚洲在线视频免费观看| 91麻豆国产在线观看| 国产精品国产成人国产三级| 国产精品一区二区久激情瑜伽| 久久亚洲综合色| 国产揄拍国内精品对白| 久久九九影视网| 国产一区二区三区免费播放| 久久综合久久鬼色中文字| 国产在线视频一区二区| 久久一日本道色综合| 国产成人午夜99999| 久久久影视传媒| 大尺度一区二区| 国产日本欧洲亚洲| 99国产精品视频免费观看| 亚洲精品成人天堂一二三| 欧美色网一区二区| 欧美a级理论片| 国产欧美一区二区精品仙草咪| www.成人在线| 亚洲va在线va天堂| 欧美电视剧在线观看完整版| 国产不卡视频一区| 伊人色综合久久天天人手人婷| 欧洲av在线精品| 久久精品国内一区二区三区| 国产午夜精品一区二区三区四区| caoporen国产精品视频| 香蕉乱码成人久久天堂爱免费| 日韩欧美高清在线| av中文字幕在线不卡| 亚洲国产视频一区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美丰满少妇xxxxx高潮对白| 蜜桃视频在线观看一区| 国产精品护士白丝一区av| 欧美视频一区二区在线观看| 久久99日本精品| 一区二区三区四区不卡在线 | 国产成人在线视频免费播放| 亚洲免费在线观看| 2021中文字幕一区亚洲| 91同城在线观看| 久久精品国产精品亚洲精品| 中文字幕综合网| 欧美成人在线直播| 欧美吞精做爰啪啪高潮| 国产精品自在欧美一区| 天堂蜜桃一区二区三区| 亚洲国产高清不卡| 欧美一区二区三区在线观看视频| av资源站一区| 久久电影网电视剧免费观看| 亚洲综合另类小说| 国产精品三级av| 亚洲精品一区二区精华| 欧美日韩成人一区| 91麻豆自制传媒国产之光| 国产在线精品国自产拍免费| 五月天网站亚洲| 综合久久久久久| 欧美—级在线免费片| 精品少妇一区二区三区 | 久久69国产一区二区蜜臀| 亚洲主播在线播放| 亚洲女人的天堂| 一区视频在线播放| 国产精品传媒视频| 欧美极品aⅴ影院| 久久看人人爽人人| 日韩精品一区二区三区swag| 欧美一区二区在线看| 538prom精品视频线放| 欧美精选一区二区| 欧美日韩久久不卡| 欧日韩精品视频| 在线视频国产一区| 在线一区二区观看| 欧美三级视频在线| 欧美日韩亚洲综合| 欧美人狂配大交3d怪物一区| 欧美视频在线一区| 欧美日韩成人综合在线一区二区| 欧美性高清videossexo| 欧美日韩精品欧美日韩精品一综合| 91福利在线播放| 欧美日韩国产高清一区二区三区 | 亚洲精品一区二区三区在线观看| 日韩一区二区三区免费看 | 免费在线观看一区二区三区| 午夜精品福利一区二区蜜股av| 亚洲第一成年网| 久久精品免费观看| 国产精品白丝jk黑袜喷水| 波波电影院一区二区三区| 91国模大尺度私拍在线视频 | 久久99精品久久久久久动态图| 另类专区欧美蜜桃臀第一页| 国产精一品亚洲二区在线视频| 国产成人精品一区二区三区四区 | 麻豆精品一区二区三区| 激情小说欧美图片| 成人av午夜影院| 欧美综合亚洲图片综合区| 制服丝袜中文字幕亚洲| 亚洲精品一区二区三区精华液 | 亚洲美女免费在线| 亚洲午夜一二三区视频| 狠狠色综合播放一区二区| 国产精品一区免费视频| 欧美综合一区二区| 精品国产髙清在线看国产毛片| 国产三区在线成人av| 亚洲自拍都市欧美小说| 久久99久国产精品黄毛片色诱| 成人激情文学综合网| 欧美伦理视频网站| 国产精品高潮呻吟| 免费成人在线视频观看| 94-欧美-setu| 久久久青草青青国产亚洲免观| 亚洲激情自拍偷拍| 国产精品一区二区视频| 在线电影国产精品| ㊣最新国产の精品bt伙计久久| 蜜乳av一区二区| 在线观看91视频|