![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в отдельном потоке вызвать функцию из основного без зависаний
AlxAY © (2012-02-17 13:53:00)Пробовал по-разному:
procedure TMyThread.Execute;
begin
....
Synchronize(Name(1, 'строка')); //- так не компилируется
// Form1.Name(1, 'строка'); - так виснет выполнение данной функции
...
end;
function Form1.Name(X: integer; S: String): Integer;
begin
...
end;
Отдельно скопировать то-же самое для потока TMyThread, продублировать код Name(X:integer;S:String):Integer ? Или можно использовать одну function Form1.Name ???
_Юрий (2012-02-19 09:57:00) [1]Отправить форме сообщение
(PostMessage)
параметры передать через параметры сообщения
antonn (2012-02-18 01:56:00) [2]Там конечно же. И больше нигде быть не может, поэтому желательно к ней обращаться через критическую секцию.
Крит. секция, кстати тоже там, поэтому к ней тоже нужно через отдельную синхронизацию обращаться. Только не очень часто - программа заболеть может от напряжения.
ЗЫ напряжение можно взять в розетке
ЗЗЫ розетка не в потоке, потому можно без синхронизации
Sha (2012-02-18 01:42:00) [3]IntToStr() там или не там?
antonn (2012-02-18 01:23:00) [4]
> SMTP (17.02.12 20:38) [4]
там где VCL
SMTP (2012-02-17 20:38:00) [5]А, простите, что есть "функция из основного"?
Dimka Maslov (2012-02-17 15:10:00) [6]можно ещё форме сообщение послать.
Ega23 (2012-02-17 14:53:00) [7]Синхронайзом пускается метод без параметров.
Сергей М. (2012-02-17 14:18:00) [8]В справке же есть пример, почему не проштудировать его ?