Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.036 c
1-1101314348
Jolik
2004-11-24 19:39
2004.12.05
Не подскажите быстрый алгоритм сравнения символьных...


1-1100890969
AlexHawk
2004-11-19 22:02
2004.12.05
апуск и останов таймера кнопками с клавы??


1-1101120510
Junior
2004-11-22 13:48
2004.12.05
как реализовать Обращению к объекту?


3-1099647796
alsov1
2004-11-05 12:43
2004.12.05
Помогите запихнуть иерархию в TTreeView


14-1100375381
Soft
2004-11-13 22:49
2004.12.05
Сектор Газа.





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