Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

Для чего нужен 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
14-1100772358
cvg
2004-11-18 13:05
2004.12.05
У кого-нить есть прикол про сотворение мира?


14-1100579946
ocean
2004-11-16 07:39
2004.12.05
Windows Messenger


3-1099571426
Mih
2004-11-04 15:30
2004.12.05
Вопрос поиска.


1-1101233667
Al1
2004-11-23 21:14
2004.12.05
Для чего свойство Tag


3-1100002398
Term
2004-11-09 15:13
2004.12.05
TQReport как сделать чтобы одна страница была портрет а вторая