zoukankan      html  css  js  c++  java
  • delphi多线程程序示例(与.net一样简单)

    demo:

    (*----下面这个程序介绍了我们在使用线程及未使用线程二种情况下,运行该程序的反
    应。当点UsedThread按钮时,则建立一个线程,这时我们可以在程序进行计算的同
    时,改变窗体的尺寸及移动它。当按下NoUsedThread按钮时,不建立线程,我们会发
    现在程序没有计算完之前根本不能做其它任何事情!


    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;

    type
      TForm1 = class(TForm)
        UsedThread: TBitBtn;
        NoUsedThread: TBitBtn;
        procedure UsedThreadClick(Sender: TObject);
        procedure NoUsedThreadClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    function MyThreadFunc(P:pointer):Longint;stdcall;
    var
      i:longint;
      DC:HDC;
      S:string;
    begin
      DC:=GetDC(Form1.Handle);
      for i:=0 to 500000 do begin
        S:=Inttostr(i);
        Textout(DC,10,10,Pchar(S),length(S));
      end;
      ReleaseDC(Form1.Handle,DC);
    end;


    procedure TForm1.UsedThreadClick(Sender: TObject);
    var
      hThread:Thandle;//定义一个句柄
      ThreadID:DWord;
    begin
    //创建线程,同时线程函数被调用
      hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID);
      if hThread=0 then
      messagebox(Handle,'Didn’tCreateaThread',nil,MB_OK);
    end;

    procedure TForm1.NoUsedThreadClick(Sender: TObject);
    begin
      MyThreadfunc(nil);
      //没有创建线程时,直接调用线程函数
    end;
    end.

  • 相关阅读:
    redux
    ajax跨域例子
    flux
    BSON数据格式
    JS代码风格自动规整工具Prettier
    JS通用模块模式 UMD
    Promise库
    webpack打包理解
    前端自动提示功能插件-typeahead
    socket.io emit callback调用探秘
  • 原文地址:https://www.cnblogs.com/chinatefl/p/368894.html
Copyright © 2011-2022 走看看