Advertisement
RandomClear

How to name a thread

Aug 23rd, 2013
430
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.63 KB | None | 0 0
  1. //
  2. // -= TThreadEx sample =-
  3. //
  4. // See also: http://www.eurekalog.com/help/eurekalog/multithreading_tthreadex.php
  5.  
  6. uses
  7.   EBase;
  8.  
  9. type
  10.   TMyThread = class(TThreadEx)
  11.   protected
  12.     procedure Execute; override;
  13.   end;
  14.  
  15. procedure TMyThread.Execute;
  16. begin
  17.   inherited;  // <- this is important
  18.  
  19.   // ... actual thread's code goes there
  20. end;
  21.  
  22. // ...
  23.   Thread := TMyThread.Create('My Thread, FileName=' + FileName);
  24.   // or
  25.   Thread := TMyThread.Create(False { <- suspended? }, 'My Thread, FileName=' + FileName);
  26.  
  27.  
  28. //
  29. // -= TThread sample =-
  30. //
  31.  
  32. uses
  33.   Classes,
  34.   EThreadsManager;
  35.  
  36. type
  37.   TMyThread = class(TThread)
  38.   private
  39.     FFN: String;
  40.   protected
  41.     procedure Execute; override;
  42.   public
  43.     proeprty FileName: String read FFN write FFN;
  44.   end;
  45.  
  46. procedure TMyThread.Execute;
  47. begin
  48.   inherited;
  49.   NameThread('My Thread, FileName=' + FileName);
  50.  
  51.   // ... actual thread's code goes there
  52. end;
  53.  
  54.  
  55. //
  56. // -= BeginThreadEx sample =-
  57. //
  58. // See also: http://www.eurekalog.com/help/eurekalog/multithreading_beginthreadex.php
  59.  
  60. {$IFDEF EUREKALOG}
  61. uses
  62.   EBase;
  63. {$ENDIF}
  64.  
  65. type
  66.   PThreadArguments = ^TThreadArguments;
  67.   TThreadArguments = record
  68.     FileName: String;
  69.     // ... any other arguments
  70.   end;
  71.  
  72. function MyThreadProc(Parameter: Pointer): Integer;
  73. var
  74.   Args: TThreadArguments;
  75. begin
  76.   Args := PThreadArguments(Parameter)^;
  77.   Dispose(PThreadArguments(Parameter));
  78.  
  79.   // ... actual thread's code goes there
  80. end;
  81.  
  82. ...
  83.  
  84. var
  85.   Args: PThreadArguments;
  86.   TID: Cardinal;
  87.   TH: THandle;
  88. begin
  89.   Args := AllocMem(SizeOf(TThreadArguments));
  90.  
  91.   Args.FileName := Edit1.Text;
  92.  
  93.   TH := {$IFDEF EUREKALOG}BeginThreadEx{$ELSE}BeginThread{$ENDIF}
  94.     (nil, 0, MyThreadProc, Args, 0, TID
  95.     {$IFDEF EUREKALOG}, 'FileName=' + Args.FileName{$ENDIF});
  96.  
  97.   if TH = 0 then
  98.     Dispose(Args)
  99.   else
  100.     CloseHandle(TH);
  101. end;
  102.  
  103.  
  104. //
  105. // -= BeginThread sample =-
  106. //
  107.  
  108. uses
  109.   EThreadsManager;
  110.  
  111. type
  112.   PThreadArguments = ^TThreadArguments;
  113.   TThreadArguments = record
  114.     FileName: String;
  115.     // ... any other arguments
  116.   end;
  117.  
  118. function MyThreadProc(Parameter: Pointer): Integer;
  119. var
  120.   Args: TThreadArguments;
  121. begin
  122.   Args := PThreadArguments(Parameter)^;
  123.   Dispose(PThreadArguments(Parameter));
  124.  
  125.   NameThread('FileName=' + Args.FileName);
  126.  
  127.   // ... actual thread's code goes there
  128. end;
  129.  
  130. ...
  131.  
  132. var
  133.   Args: PThreadArguments;
  134.   TID: Cardinal;
  135.   TH: THandle;
  136. begin
  137.   Args := AllocMem(SizeOf(TThreadArguments));
  138.  
  139.   Args.FileName := Edit1.Text;
  140.  
  141.   TH := BeginThread(nil, 0, MyThreadProc, Args, 0, TID);
  142.  
  143.   if TH = 0 then
  144.     Dispose(Args)
  145.   else
  146.     CloseHandle(TH);
  147. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement