Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.03.2013, 05:25
Аватар для Speech
Speech Speech вне форума
Новичок
 
Регистрация: 16.02.2012
Сообщения: 55
Репутация: 10
По умолчанию Передача параметров потоку

Тут сообщение разместить не дали, дескать слишком старая тема. Но вопрос похожий, только нужно функцию вставить в поток, передать ей параметры, произвести вычисления и вернуть результат. Код, представленный NumLock-ком при компиляции сильно тормозит, свою работу правда делает, но по завершении программа напрочь зависает. Поэтому разобрать его толком не мог.

Какие еще есть варианты передачи параметров потоку? Или оптимизировать прежний пример...
Ответить с цитированием
  #2  
Старый 26.03.2013, 08:09
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

А чему в том коде тормозить? Там две строки. То что зависает - это да. Ты бы свой код показал.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 26.03.2013, 10:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
unit Unit1;

interface

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

type
  TMyThread = class(TThread)
  private
    param1: String;
    param2: String;
    param3: String;
    param4: Integer;
    param5: Integer;
    rslt: String;
  protected
    procedure Execute; override;
  public
    constructor Create(aparam1, aparam2, aparam3: String; aparam4,
      aparam5: Integer);
    destructor Destroy; override;
  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    MyThread: TMyThread;
    procedure OnThread(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMyThread }

constructor TMyThread.Create(aparam1, aparam2, aparam3: String; aparam4,
  aparam5: Integer);
begin
  inherited Create(True);
  FreeOnTerminate:=True;
  param1:=aparam1;
  param2:=aparam2;
  param3:=aparam3;
  param4:=aparam4;
  param5:=aparam5;
  Resume;
end;

destructor TMyThread.Destroy;
begin
  windows.Beep(1000, 100);
  inherited Destroy;
end;

procedure TMyThread.Execute;
begin
  Sleep(1000);
  rslt:=param1+param2+param3+IntToStr(param4+param5);
end;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyThread:=TMyThread.Create('a', 'b', 'c', 1, 2);
  MyThread.OnTerminate:=OnThread;
end;

procedure TForm1.OnThread(Sender: TObject);
begin
  Caption:=MyThread.rslt;
end;

end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Speech (26.03.2013)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter