Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создавать потоки без класса TThread? 
:(
    Опции темы
Pakshin A. S.
Дата 3.11.2004, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Код


unit Unit1; 

interface 

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

procedure incedit1; stdcall; 
procedure incedit2; stdcall; 

type 
  TForm1 = class(TForm) 
    Button1: TButton; 
    Edit1: TEdit; 
    Edit2: TEdit; 
    Button6: TButton; 
    Button7: TButton; 
    Button2: TButton; 
    Button3: TButton; 
    Button5: TButton; 
    Button4: TButton; 
    procedure Button1Click(Sender: TObject); 
    procedure Button6Click(Sender: TObject); 
    procedure Button7Click(Sender: TObject); 
    procedure Button4Click(Sender: TObject); 
    procedure Button5Click(Sender: TObject); 
    procedure Button2Click(Sender: TObject); 
    procedure Button3Click(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 

var 
  Form1: TForm1; 

implementation 

var 
  th1, th2: cardinal; 
  h1, h2: integer; 

procedure incedit1; 
var 
  i: integer; 
begin 
  i := 0; 
  while true do 
  begin 
    form1.edit1.text := inttostr(i); 
    i := i + 1; 
  end; 
end; 

procedure incedit2; 
var 
  i: integer; 
begin 
  i := 0; 
  while true do 
  begin 
    form1.edit2.text := inttostr(i); 
    i := i + 1; 
  end; 
end; 
{$R *.DFM} 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  h1 := beginthread(nil, 1024, @incedit1, nil, 0, th1); 
  h2 := beginthread(nil, 1024, @incedit2, nil, 0, th2); 
end; 

procedure TForm1.Button6Click(Sender: TObject); 
begin 
  terminatethread(h1, 0); 
end; 

procedure TForm1.Button7Click(Sender: TObject); 
begin 
  terminatethread(h2, 0); 
end; 

procedure TForm1.Button4Click(Sender: TObject); 
begin 
  resumethread(h1); 
end; 

procedure TForm1.Button5Click(Sender: TObject); 
begin 
  resumethread(h2); 
end; 

procedure TForm1.Button2Click(Sender: TObject); 
begin 
  suspendthread(h1); 
end; 

procedure TForm1.Button3Click(Sender: TObject); 
begin 
  suspendthread(h2); 
end; 

end. 

--------------------------------------------------------------------------------

unit Unit1; 

interface 

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

procedure printh(p: pointer); stdcall; 
type 
  TForm1 = class(TForm) 
    Button1: TButton; 
    procedure Button1Click(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 

var 
  Form1: TForm1; 

implementation 

{$R *.DFM} 

procedure printh(p: pointer); 
begin 
  TForm1(p).caption := 'Hello from thread'; 
  ExitThread(0); 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
  h1: cardinal; 
begin 
  createthread(nil, 128, @printh, self, 0, h1); 
end; 

end. 




Примечание от Jin X 
Программа не работает. Запускаю, жму Button1, счётчик покрутится полсекунды и всё. Кстати, у procedure incedit1; stdcall; не должно быть параметра типа pointer? Но даже и с ним не пашет. А вот если после i := i + 1; поставить Sleep(10), то будет работать. Вот только не понятно почему. Может, из-за того, что нет синхронизации? 


Это сообщение отредактировал(а) Alexeis - 7.9.2007, 15:21
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.