|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Timer зависает. Почему
вот код
Код:
memo1.Clear; Process1.CommandLine:='ping -c 1 8.8.8.8'; Process1.Execute; memo1.lines.LoadFromStream(process1.Output); Label50.Caption:=copy(memo1.Lines[1],47,6); if Label50.caption='' then begin StatusBar1.Panels.Items[0].Text:='$(B'3'd'Q'd'e'c(B $(B'a'`'U'\']'p'i'V'_'Z'q(B: $(B'_'V'd'e(B'; Button3.Enabled:=True; Button4.Enabled:=False; end else begin StatusBar1.Panels.Items[0].Text:='$(B'3'd'Q'd'e'c(B $(B'a'`'U'\']'p'i'V'_'Z'q(B: $(B'V'c'd'n(B'; Button3.Enabled:=false; Button4.Enabled:=true; end; application.ProcessMessages; что в нём не так а то программа виснет и пишет типо не отвечает Последний раз редактировалось sersoftin, 07.06.2012 в 21:40. |
#2
|
||||
|
||||
что делает метод Process1.Execute?
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard |
#3
|
|||
|
|||
=>
process1.execute это выполнение команды заданной в process1.comandline
я написал само событие которое выполняется по таймеру |
#4
|
||||
|
||||
как реализован этот метод? (отдельный поток или основной поток)
F5 на третьей строке, потом F7, F7, F7... Понять, что хочет заказчик - бесценно, ведь он платит MasterCard |
#5
|
||||
|
||||
Долгосрочные операции в таймере лучше не делать. Тут есть разные подходы:
1. Послать сообщение основной программе, затем выполнить нужный код. 2. Выставить флаг и затем ... 3. Стартовать поток и затем он ... 4. и т.д. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
|||
|
|||
=>
то есть как мне убрать тормоза? отделить это в отдельную процедуру
|
#7
|
||||
|
||||
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#8
|
|||
|
|||
=>
а если мне его выключать нельзя. ну мне нужно что бы постоянно пинговалась сеть. и данные выводились в label каждую секунду или, хотя бы, полторы
|
#9
|
||||
|
||||
Выставляй какой-нибудь флаг.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
|||
|
|||
объясни что такое флаг и как его поставить а то я этого не знаю. хотя может и знаю но не знаю что это флаг
|
#11
|
||||
|
||||
Флаг, любая булеановская переменная, которую выставляешь в True/False в зависимости от потребностей задачи.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#12
|
|||
|
|||
а. понял. только вот у меня там условий нету. просто делается пинг и забивается через мемо в label и не от чего это не зависит и происходить должно всегда.
|
#13
|
||||
|
||||
В любом случае, таймер не должен выполнять длительные операции сам, а только давать "отмашку" для их выполнения. Продумай алгоритм как лучше организовать, может воспользоваться "нитью" (Thread).
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#14
|
|||
|
|||
сейчас попробую
|
#15
|
|||
|
|||
Цитата:
Написать свою реализацию клиента протокола ICMP - это именно он и есть, ping. И тогда можно его пустить в отдельном потоке постоянно и просто событием или CallBack'ом выводить информацию в форму. Лично я бы делал так. |