Форум: "Основная";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
ВнизВыполнение функции в отдельном потоке Найти похожие ветки
← →
VID (2002-08-28 21:48) [0]Есть простая функция:
Function MakeSomeThing(InParam1:String; InParam2:Integer):String;
begin
Result := InParam1+IntToStr(InParam2);
end;
и есть BeginThread...
Насколько я понял, beginthread используется для того, что бы выполнить какую-либо функцию не в основном потоке приложения, а в дополнительном.
Но как назло, в хелпе маловато написано про эту функцию.
В-общем, вопрос:
Как правильно выполнить вышеуказаннюу функцию (MakeSomeThing) в отдельном потоке ? Причём не следует забывать про параметры которые обязательно должны быть переданы функции MakeSomeThing.
← →
Старый паскалист (2002-08-28 22:33) [1]Вообще-то в дельфях обычно с потоками работают через TThread:
(А ф-я BeginThread вызывается в его конструкторе)
type
TMSTThread = class(TThread)
private
FInParam1: string;
FInParam2: Integer;
FResult: string;
public
constructor CreateWithArgs(AInParam1: string; AInParam2: Integer; CreateSuspended: Boolean);
// begin
// FInParam1 := AInParam1;
// FInParam2 := AInParam2;
// FreeOnTerminate := True; // False;
// Create(CreateSuspended);
// end;
procedure Execute; override;
// begin
// FResult := MakeSomeThing(FInParam1, FInParam2);
// // Как нибудь сообщить основному потоку, что работа
// // завершена (путём посылки сообщения или
// // выполнения синхронизованного метода, что,
// // в сущности, то же самое).
// end;
end;
Использовать BeginThread ещё имело бы, может быть, смысл, если бы у тебя ф-я была с одним аргументом - а так тебе всё равно придётся функцию-оболочку городить.
← →
VID (2002-08-28 23:37) [2]БОЛЬШОЕ спасибо :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c