首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

API建立的线程怎么判断‘挂起’、‘唤醒’的状态,求教育

2012-07-28 
API建立的线程如何判断‘挂起’、‘唤醒’的状态,求教育线程我是用API的方式创建的,现在我想通过判断这个线程的

API建立的线程如何判断‘挂起’、‘唤醒’的状态,求教育
线程我是用API的方式创建的,现在我想通过判断这个线程的状态来确定按钮的单击事件是执行‘挂起’还是‘唤醒’的操作
hThread:=CreateThread(nil,0,@MyThreadFun,nil,CREATE_SUSPENDED,ID);

[解决办法]
需要自己计数,或者从ResumeThread和SuspendThread返回值确定挂起次数

Delphi(Pascal) code
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    Memo1: TMemo;    Button2: TButton;    Button3: TButton;    procedure FormDestroy(Sender: TObject);    procedure Button2Click(Sender: TObject);    procedure Button3Click(Sender: TObject);    procedure FormCreate(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;  mThread: Cardinal;  mCount: integer;  mTag: integer;implementation{$R *.dfm}function MyThreadFun(p: pointer): Integer; stdcall;begin        while true do        begin                Inc(mCount);                Form1.Memo1.Lines.Add('running' + IntToStr(mCount));                sleep(1000);        end;end;procedure TForm1.FormDestroy(Sender: TObject);begin        TerminateThread(mThread,0);end;procedure TForm1.Button2Click(Sender: TObject);begin        if mTag>0 then        begin                ResumeThread(mThread);                Dec(mTag);        end;end;procedure TForm1.Button3Click(Sender: TObject);begin        if mTag=0 then        begin                SuspendThread(mThread);                Memo1.Lines.Add('Suspend');                Inc(mTag);        end;end;procedure TForm1.FormCreate(Sender: TObject);var        id: dword;begin        mCount := 0;        mThread := CreateThread(nil,0,@MyThreadFun,nil,CREATE_SUSPENDED,ID);        mTag := 1;end;end. 

热点排行