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

Вниз

Зависает создание потока   Найти похожие ветки 

 
исследователь ©   (2007-06-29 18:42) [0]

Вот код, откуда вызываю:
procedure TForm1.btnFloodClick(Sender: TObject);
begin
b:=not b;
if b then begin
hThread:=createthread(nil,0,@lpFlooding,nil,0,threadid);
 if(hThread=0)then
 begin
     showmessage("Cannot create thread!");
     Exit;
  end;
 waitforsingleobject(hThread,INFINITE);
 btnFlood.Caption:="Прекратить!";
end
...

вот сама процедура lpFlooding:

function lpFlooding(lpData:Pointer):integer;
var
i:integer;
begin
 for i:=1 to 10 do
  showmessage("x");
// на самом деле мессага другая и в других целях, но не суть важно
 result:=1;
end;

при нажатии на кнопку все виснет! в чем проблема?


 
TUser ©   (2007-06-29 18:47) [1]

ShowMessage из потока - зря.


 
исследователь ©   (2007-06-29 18:58) [2]

да я это для примера привел, там на деле в InputBox значение вводится, и не 10 раз, а просто 2 значения


 
TUser ©   (2007-06-29 19:05) [3]

Хм, а InputBox потокобезопасен? Он же вроде - кусок VCL (не то SysUtils, не то Dialogs, не то еще что-то), разве нет?. Я просто не в курсе.


 
DiamondShark ©   (2007-06-29 19:06) [4]

А где в потоке message pump?


 
исследователь ©   (2007-06-29 19:08) [5]

а вот подскажите, как верно организовать?


 
Джо ©   (2007-06-29 19:11) [6]

> [5] исследователь ©   (29.06.07 19:08)
> а вот подскажите, как верно организовать?

Работать с пользовательским интерфейсом в контексте главного потока.


 
DiamondShark ©   (2007-06-29 19:17) [7]


> а вот подскажите, как верно организовать?

чего именно верно организовать?
Если многопоточный UI средствами VCL, то "верно" -- никак. Не предназначено оно для многопоточного использования.

Либо внятно сформулируй задачу более верзнего уровня.
Потому как приведённый код -- бессмыслица.



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

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

Наверх





Память: 0.46 MB
Время: 0.041 c
2-1182845815
Dimon777
2007-06-26 12:16
2007.07.22
Как узнать имя пользователя, запустившего приложение?


2-1182919642
ОН
2007-06-27 08:47
2007.07.22
CheckListBox1.Canvas


6-1166518747
xman
2006-12-19 11:59
2007.07.22
DXplay "диалог соединения на русском языке"


4-1164897111
MU
2006-11-30 17:31
2007.07.22
Сканер штрих-кодов


15-1182538255
ProgRAMmer Dimonych
2007-06-22 22:50
2007.07.22
Последняя тема по Direct3D9





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский