Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
ВнизДля чего нужен Sleep? Найти похожие ветки
← →
lamerokvdelphi (2004-11-21 18:47) [0]Вот есть такой код :
ListBox2.Items.Insert(0," ");
ListBox2.Items.add(" ");
ListBox1.Items.loadfromfile(filename);
ListBox1.Items.delete(0);
Вопрос вот в чем - мне сказали что это правильнее будет писать так :
ListBox2.Items.Insert(0," ");
ListBox2.Items.add(" ");
sleep(0);
ListBox1.Items.loadfromfile(filename);
sleep(0);
ListBox1.Items.delete(0);
Для чего надо обязательно разделятьsleep(0)
ами эти действия. Правда ли что действиеListBox1.Items.delete(0)
начнет выполняться еще до того как доработаетListBox1.Items.loadfromfile(filename)
?
← →
KilkennyCat © (2004-11-21 19:03) [1]неправда.
← →
begin...end © (2004-11-21 19:03) [2]
> Для чего надо обязательно разделять sleep(0)ами эти действия.
Необязательно.
← →
Xaker © (2004-11-21 19:05) [3]
sleep
нужен, ЧТОБЫ СПАТЬ !!!
← →
Anatoly Podgoretsky © (2004-11-21 19:05) [4]Тебе немного обманули, а слип нужен что бы кодовый поток заснул на время.
← →
Piter © (2004-11-21 19:11) [5]lamerokvdelphi (21.11.04 18:47)
Для чего нужен Sleep?
"The Sleep function suspends the execution of the current thread for a specified interval."
что, нельзя в справке посмотреть?
Для чего надо обязательно разделять sleep(0)ами эти действия
я не знаю
Правда ли что действие ListBox1.Items.delete(0) начнет выполняться еще до того как доработает ListBox1.Items.loadfromfile(filename)?
а что мешает посмотреть код loadfromfile?procedure TStrings.LoadFromFile(const FileName: string);
var
Stream: TStream;
begin
Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
И побешать по вызовам? Никаких доп. потоков не создается, а значит управление не может вернуться, пока все действия не выполнятся
← →
vertal © (2004-11-21 22:56) [6]Вот отрывок из win32.hlp по теме PostThreadMessage
The thread to which the message is posted must have created a message queue, or else the call to PostThreadMessage fails. Use one of the following methods to handle this situation:
· Call PostThreadMessage. If it fails, call the Sleep function and call PostThreadMessage again. Repeat until PostThreadMessage succeeds.
В одном приложении у меня был поток, где очередь сообщений точно существовала , так как выбирались и обрабатывались сообщения по GetMessage. И тем не менее с первого раза PostThreadMessage отрабатывала не всегда, а по совету Microsoft пришлось сделать
while not PostThreadMessage(...)do sleep(0);
Это заработало, но я не понимаю, как sleep(0) в одном потоке влияет на другой поток. Может кто-нибудь объяснить мне такое поведение программы?
← →
GuAV © (2004-11-21 23:00) [7]Piter © (21.11.04 19:11) [5]
как sleep(0) в одном потоке влияет на другой поток.
VOID Sleep(
DWORD dwMilliseconds // sleep time
);
...
dwMilliseconds
...
A value of zero causes the thread to relinquish the remainder of its time slice to any other thread of equal priority that is ready to run.
← →
Yanis © (2004-11-21 23:01) [8]> мне сказали что это правильнее будет писать так :
А кто или где тебе такое подсказали?
← →
Yanis © (2004-11-21 23:02) [9]Удалено модератором
← →
Yanis © (2004-11-21 23:04) [10]Удалено модератором
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.049 c