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

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

?? threadtask.pas

?? Delphi中處理線程池的一個組件,非常好用.
?? PAS
字號:
{*******************************************************}
{                                                       }
{       高級線程                                        }
{       單元名 ThreadTask.pas                           }
{                                                       }
{       版權所有 (C) 2006-6-25 飛翔的久久酷             }
{       http://www.flying99koo.com                      } 
{       QQ:78273318 Mail: flying99koo@gmail.com         }
{                                                       }
{*******************************************************}


unit ThreadTask;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, StdCtrls, ComCtrls;

type
  TThreadTask = class(TThread)        //基礎線程任務類
  private
    _PAUSE_FLAG : boolean;
    procedure NotifyPool;          //線程池通知方法
  protected
    procedure PauseHere;           //由子類使用,設置暫停點
    procedure Relay(sec : Byte);   //延時方法
    procedure Execute; override;
    procedure InitJob; virtual;    //用于創建所需要的類以及類的初始化
    procedure DoneJob; virtual;    //用于銷毀創建的類
    procedure DoJob; virtual;abstract;
  public
    _THREAD_LIST : TThreadList;    //線程列表,用于線程池
    _TASK_INDEX : Integer;         //任務索引,用于線程池
    procedure Pause;               //暫停
    procedure Goon;                //繼續
    procedure Stop; virtual;       //停止
    constructor Create;
  end;

  TTraceLogNotifyEvent = procedure(Log : string; Sender: TObject) of object;

  TLvTraceLogNotifyEvent = procedure(Log : string; Row : Integer; Column : Byte; ImgIdx : SmallInt; Sender: TObject) of object;

  TAdvThreadTask = class(TThreadTask)                //具有TRACE功能的線程任務
  protected
    procedure TraceLog(Log : string);     //listbox方式 Trace 方法
    procedure LvTraceLog(Log : string; Row : Integer; Column : Byte; ImgIdx : SmallInt); //listview 方式 Trace 方法
  public
    _OnTraceLog : TTraceLogNotifyEvent;
    _OnLvTraceLog : TLvTraceLogNotifyEvent;
  end;

  TNetWorkThreadTask = class(TAdvThreadTask)        //網絡協議線程任務
  protected
    procedure CreateProtocal;virtual;abstract;      //創建網絡協議類
    procedure FreeProtocal;virtual;abstract;        //銷毀網絡協議類
    procedure InitProtocal;virtual;abstract;        //初始化網絡協議
    procedure ReCreateProtocal;                     //重創網絡協議并初始化
    procedure DoJob; override;
    procedure DoNetWorkJob;virtual;abstract;
  public
    procedure Stop; override;
  end;

  TProgressNotifyEvent = procedure(Min, Max, Progress : Integer; Sender: TObject) of object;

  TLoopNetWorkThreadTask = class(TNetWorkThreadTask)     //循環型網絡協議線程任務
  protected
    _LOOP_INDEX : Integer;                               //循環索引
    _JUMP_FLAG : Boolean;                                //跳出循環標志
    procedure DoNetWorkJob; override;                    
    procedure DoLoopNetWorkJob; virtual;abstract;        //實際任務實體 由子類覆蓋
  public
    _RELAY : Integer;
    _LOOP_COUNT : Integer;
    _OnProgress : TProgressNotifyEvent;
    constructor Create;
  end;

implementation

uses
  ThreadPool, HTTPutil;

{TThreadTask}
constructor TThreadTask.Create;
begin
  inherited Create(TRUE);
  FreeOnTerminate := TRUE;
  _THREAD_LIST := nil;
  _TASK_INDEX := -1;
end;

procedure TThreadTask.Execute;
begin
  InitJob;
  Dojob;
  DoneJob;
  NotifyPool;
end;

procedure TThreadTask.DoneJob;
begin
end;

procedure TThreadTask.InitJob;
begin
end;


procedure TThreadTask.NotifyPool;
var
  i : Integer;
begin
  if _THREAD_LIST <> nil then
  with _THREAD_LIST.LockList do
  try
    for i:=0 to Count-1 do
    if TThreadObj(Items[i]^).Handle = Self.Handle then
    begin
      TThreadObj(Items[i]^).Active := False;
      Break;
    end;
  finally
    _THREAD_LIST.UnlockList;
  end;
end;

procedure TThreadTask.PauseHere;
begin
  if _PAUSE_FLAG then Self.Suspend;
end;

procedure TThreadTask.Pause;
begin
  _PAUSE_FLAG := TRUE;
end;

procedure TThreadTask.Goon;
begin
  _PAUSE_FLAG := FALSE;
  Self.Resume;
end;

procedure TThreadTask.Stop;
begin
  DoneJob;
  TerminateThread(Self.Handle,0);
end;

procedure TThreadTask.Relay(sec : Byte);
var
  i : Integer;
begin
  for i:=1 to 10*sec do
  begin
    if _PAUSE_FLAG then break;
    Sleep(100);
  end;
end;


{TAdvThreadTask}
procedure TAdvThreadTask.TraceLog(Log : string);
begin
  if Assigned(_OnTraceLog) then
  _OnTraceLog(Log,Self);
end;

procedure TAdvThreadTask.LvTraceLog(Log : string; Row : Integer; Column : Byte; ImgIdx : SmallInt);
begin
  if Assigned(_OnLvTraceLog) then
  _OnLvTraceLog(Log,Row,Column,ImgIdx,Self);
end;

{TNetWorkThreadTask}
procedure TNetWorkThreadTask.ReCreateProtocal;
begin
  FreeProtocal;
  CreateProtocal;
  InitProtocal;
end;

procedure TNetWorkThreadTask.DoJob;
begin
  CreateProtocal;
  InitProtocal;
  DoNetWorkJob;
  FreeProtocal;
end;

procedure TNetWorkThreadTask.Stop;
begin
  FreeProtocal;
  inherited;
end;

{TLoopNetWorkThreadTask}
constructor TLoopNetWorkThreadTask.Create;
begin
  inherited;
  _LOOP_COUNT := 1;
  _LOOP_INDEX := 1;
  _JUMP_FLAG := False;
end;

procedure TLoopNetWorkThreadTask.DoNetWorkJob;
var
  i : Integer;
begin
  for i:=1 to _LOOP_COUNT do
  begin
    _LOOP_INDEX := i;
    DoLoopNetWorkJob;
    if Assigned(_OnProgress) then
    _OnProgress(0,_LOOP_COUNT,_LOOP_INDEX,Self);
    if _JUMP_FLAG then
    Break;
    if i<>_LOOP_COUNT then
    Relay(_RELAY);
    PauseHere;
  end;
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲第一狼人社区| 综合婷婷亚洲小说| 另类调教123区| 日韩精品一区二区在线| 九九精品一区二区| 久久久不卡网国产精品二区| 国产一区二区h| 国产偷国产偷精品高清尤物| 丰满岳乱妇一区二区三区| 中文字幕不卡一区| 欧美一a一片一级一片| 天堂蜜桃一区二区三区| 日韩精品一区二区三区在线| 成人一区二区三区中文字幕| 亚洲欧洲精品一区二区三区不卡| 色嗨嗨av一区二区三区| 午夜精品久久久久久久久久久 | 成人免费视频视频| 国产精品国产自产拍高清av王其| 色呦呦国产精品| 日韩激情视频网站| 2019国产精品| 欧洲av一区二区嗯嗯嗯啊| 日韩制服丝袜先锋影音| 久久久久久久久久久99999| 97成人超碰视| 免费观看日韩电影| 亚洲欧洲精品一区二区精品久久久| 欧美色涩在线第一页| 国产成人综合在线播放| 亚洲丝袜美腿综合| 日韩欧美国产麻豆| 91免费看视频| 精品在线视频一区| 樱桃视频在线观看一区| 精品久久久久久久久久久久久久久久久 | 国产精品欧美久久久久无广告| 欧美最新大片在线看| 久久国产麻豆精品| 一区二区三区四区中文字幕| 欧美不卡在线视频| 欧美在线观看一二区| 国产成人综合网| 日本aⅴ亚洲精品中文乱码| 亚洲天堂精品在线观看| 久久久亚洲精品一区二区三区| 在线观看网站黄不卡| 国产资源精品在线观看| 亚洲va韩国va欧美va| 中文字幕国产精品一区二区| 日韩一二三四区| 欧美无砖专区一中文字| 91在线视频播放地址| 国产麻豆欧美日韩一区| 麻豆精品新av中文字幕| 亚洲一区二区三区美女| 1区2区3区精品视频| 精品成人私密视频| 91精品蜜臀在线一区尤物| 成人免费三级在线| 国产伦精品一区二区三区在线观看 | 7878成人国产在线观看| 色婷婷一区二区| 成人国产免费视频| 国产资源精品在线观看| 美女一区二区三区在线观看| 五月综合激情网| 亚洲一二三区不卡| 一区二区三区高清在线| 亚洲色欲色欲www| 国产精品国产精品国产专区不片| 欧美精品一区二区三区在线播放| 欧美精品1区2区3区| 欧美日韩电影一区| 欧美系列日韩一区| 欧美三级日韩在线| 欧美日韩dvd在线观看| 欧美色成人综合| 欧美蜜桃一区二区三区| 欧美伦理电影网| 欧美日韩三级视频| 9191国产精品| 日韩欧美一区在线观看| 欧美成人a视频| 久久精品一区二区三区不卡| 久久久久国产精品麻豆ai换脸| 久久免费美女视频| 国产精品成人一区二区三区夜夜夜| 国产精品丝袜在线| 亚洲欧洲中文日韩久久av乱码| 亚洲综合精品自拍| 青青草97国产精品免费观看无弹窗版| 日韩有码一区二区三区| 久久精品99国产精品| 国产久卡久卡久卡久卡视频精品| 岛国精品在线观看| 色婷婷久久久亚洲一区二区三区| 欧美影院一区二区三区| 91精品国产一区二区三区蜜臀 | 成人动漫视频在线| 日本二三区不卡| 欧美一区二区视频在线观看 | 懂色av中文字幕一区二区三区| 国产+成+人+亚洲欧洲自线| 91在线视频播放地址| 欧美男生操女生| 337p粉嫩大胆噜噜噜噜噜91av| 欧美极品xxx| 亚洲综合免费观看高清完整版在线 | 欧美日韩久久久| 日韩视频一区在线观看| 欧美国产精品一区二区| 亚洲曰韩产成在线| 久88久久88久久久| 91在线精品一区二区三区| 欧美疯狂性受xxxxx喷水图片| 亚洲精品在线一区二区| 亚洲精品国产精华液| 捆绑紧缚一区二区三区视频| jvid福利写真一区二区三区| 欧美成人激情免费网| 亚洲精品久久久蜜桃| 经典三级在线一区| 91国产精品成人| 久久在线观看免费| 一区二区三区在线免费| 久久国产福利国产秒拍| 色先锋资源久久综合| 精品国产制服丝袜高跟| 一区二区三区在线播放| 懂色一区二区三区免费观看| 欧美人体做爰大胆视频| 亚洲欧洲精品一区二区三区| 精品一区二区三区在线播放| 欧美性受极品xxxx喷水| 国产日产精品1区| 免费黄网站欧美| 欧美三级在线看| 亚洲婷婷综合色高清在线| 国产原创一区二区三区| 欧美一区二区三区视频在线| 一区二区三区在线不卡| 成人av中文字幕| 久久综合一区二区| 免费高清不卡av| 欧美精品久久天天躁| 亚洲色图另类专区| 国产精品中文字幕欧美| 精品少妇一区二区三区免费观看 | 日韩综合小视频| 在线影院国内精品| 国产精品电影院| 国产成人福利片| 欧美精品一区二区蜜臀亚洲| 丝袜美腿亚洲一区| 欧美日韩中文字幕一区| 亚洲美女视频在线| 99久久99久久精品国产片果冻| 国产午夜精品美女毛片视频| 国内精品免费在线观看| 26uuu亚洲综合色| 美女网站在线免费欧美精品| 在线播放视频一区| 爽好多水快深点欧美视频| 欧美在线观看一二区| 亚洲国产sm捆绑调教视频| 欧美在线你懂得| 午夜亚洲福利老司机| 欧美性大战xxxxx久久久| 一区二区三区丝袜| 欧美影视一区在线| 亚洲一区二区三区免费视频| 欧美视频一区二区三区| 亚洲成人免费影院| 欧美人xxxx| 久久99最新地址| 国产日韩欧美精品一区| 福利91精品一区二区三区| 国产精品麻豆一区二区| 91老师国产黑色丝袜在线| 一区二区三区中文在线观看| 777奇米四色成人影色区| 久久精品99国产精品| 国产色综合一区| 91视视频在线观看入口直接观看www | 久久99精品久久久久婷婷| 久久亚洲综合色一区二区三区 | 一本色道久久综合精品竹菊| 亚洲国产精品欧美一二99| 日韩欧美亚洲国产另类| 国产在线国偷精品产拍免费yy| 日本一区二区视频在线观看| 91影视在线播放| 图片区小说区国产精品视频| 欧美精品一区二区三区蜜桃视频 | 色狠狠色狠狠综合| 性欧美大战久久久久久久久| 精品日产卡一卡二卡麻豆| 成人免费av在线| 亚洲国产裸拍裸体视频在线观看乱了|