Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Вниз

Не получается у меня с потоками...   Найти похожие ветки 

 
Геннадий   (2002-10-16 22:23) [0]

Уважаемые мастера!

Подкиньте примерчик, в котором создаётся поток, выполняющий что-либо параллельно приложению.
У меня поток забирает под себя всё процессорное время, отведённое программе. В нём есть большой цикл. Я хотел убедиться, что потоки выполняются (почти) независимо от приложения и нисколько ему не мешают. А получается так, что пока поток не завершится, приложение быдет страшно тормозить.
Подкиньте примерчик, где всё работает на ура. Желательно маленький, что бы в лишнем коде не разбираться.
Спасибо.


 
Rouse_   (2002-10-16 22:28) [1]

unit Unit1;

interface

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

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

type
TTest = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ Test }

procedure TTest.Execute;
begin
inherited;
{Что нибудь делаем}
end;

procedure TForm1.FormCreate(Sender: TObject);
var tmp: TTest;
begin
tmp := TTest.Create(true);
tmp.Priority := tbIDLE;
tmp.Resume;
end;

end.


Желаю успехов


 
Delphist   (2002-10-16 23:11) [2]

Удалено модератором


 
pirat   (2002-10-16 23:19) [3]

Удалено модератором


 
pirat   (2002-10-16 23:47) [4]


hThread:THandle;

procedure TForm.Create;
var pID:integer;
info:integer; // Что угодно в том числе и указетель или структура
begin

hthread :=CreateThread(nil,0,@ThreadProc,@Info,0,pID);
// Создаем тред и запускаем

end;

procedure ThreadProc(info:pointer);
begin
// через инфо получаем данные,в принципе,если такой тред будет один,то их можно передать и через глобальные переменные
// Делаем что угодно, все формы , если обявить эту процедуру глобально,будут видны
CloseHandle(hThread);// обнуляем хэндл
end;


 
Новенький в Делфи   (2002-10-16 23:56) [5]

Так... ещё один пример.
Создаём новый модуль file>new>Other> TThread
В открывшемся окошке пишшите имя дл ясвоего типа.. к примеру MyThread
Там уже будет половина за Вас сделано.

Дальше в созданную процедуру MyTread.Execute;
вписываете что вам надо.

Создаёте переменную к пример t: TMyTread;
Дальше для испольнения потока
T:= TMyTread.create(false);//Именно False

Незабудьте подключить новый модуль к проекту
..это на вскидку...

Да и не плохо бы было код привести, где у вас не получается


 
pirat   (2002-10-17 00:02) [6]

Удалено модератором


 
Rouse_   (2002-10-17 07:46) [7]

Я вчера допустил раковую ошибочку ;)
Заместо tbIDLE пишется конечно же tpIdle.
2 Геннадий тебе выслал пример мылом, так как в Асе ты уже отключился (с шестой попытки правда мыло ушло)


Желаю успехов


 
Геннадий   (2002-10-17 19:16) [8]




М-да... Прикалываеться все горазды... Нет бы помочь...



==> Rouse_ (архив не прошёл)


 
Ketmar   (2002-10-17 20:52) [9]

2pirat:
лучше использовать не CreateThread, а BeginThread. почему - смотрите в справке Дельфи.

Satanas Nobiscum! 17-Oct-XXXVII A.S.


 
pirat   (2002-10-18 10:06) [10]

2Ketmar
Ну только если надо обрабатывать исключения.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
4-92788
dumb
2002-09-04 22:56
2002.10.28
Как изменить цвет имен файлов


6-92636
GIL
2002-08-23 04:52
2002.10.28
Как сделать так, чтобы приложение видело сеть (локалку)


14-92690
DVD
2002-10-08 03:13
2002.10.28
нужен activation number!


1-92519
vilfred
2002-10-18 17:25
2002.10.28
как передать и принять массив в функцию(процедуру)? +


4-92823
Tihas
2002-09-11 06:15
2002.10.28
Как можно имянить с помощью WIN API ширену бордюра окного элемент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский