Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.04.2011, 13:35
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию Зависает программа

Уважаемые, спецы и копипастеры, помогите решить проблему.

Проблема: даю запрос на получение данных с сервера и обрабатываю полученный ответ формата JSON

Код:
PostVK:=TStringList.Create;
    logVK:=IdHTTP1.Post('http://'+server+'?act=a_check&key='+key+'&ts='+ts+'&wait=25',postvk);

    js := TlkJSONobject.Create;
    js := TlkJSON.ParseText(logvk) as TlkJSONobject;
    ts:=IntToStr(js.getInt('ts'));
    jl:=js.Field['updates'] as TlkJSONlist;

В тот момент когда происходит этот ряд операторов, программа подвисает, что именно и мешает мне реализовать задумку.

В чем суть программы? Программа предназначена для обмена мгновенными сообщениями соц сети Вконтакте. Поэтому при проверке апдейтов (пользователь онлайн, оффлайн и тд) категорично нельзя чтобы программа подвисала.

Решение: ?
Ответить с цитированием
  #2  
Старый 17.04.2011, 13:44
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Неподарок
Поэтому при проверке апдейтов (пользователь онлайн, оффлайн и тд) категорично нельзя чтобы программа подвисала.

Решение: ?
TThread!!!
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 17.04.2011, 13:53
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Поподробнее можно? Почитал я про этот класс и что?

Не мог бы подсказать как да что там. Что мне в программу вбить?

Последний раз редактировалось Кодер, 17.04.2011 в 13:56.
Ответить с цитированием
  #4  
Старый 17.04.2011, 14:01
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

вот поподробнее:
Код:
type
  TStatusThread = class(TThread)
  protected
    procedure Execute; override;
  public
    constructor Create;
  end;

{ TStatusThread }

constructor TStatusThread.Create;
begin
  inherited Create(True);
  FreeOnTerminate:=True;
  Resume;
end;

procedure TStatusThread.Execute;
begin
  // получаем пользователь онлайн, оффлайн и тд
end;

begin
  TStatusThread.Create;
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 17.04.2011, 14:04
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

А если попробывать так?

Код:
type
   TMyThread = class(TThread)
   private
     { Private declarations }
   protected
     procedure DoWork;
     procedure Execute; override;
   end;

 implementation

 procedure TMyThread.Execute;
 begin
   while not Terminated do
     Synchronize(DoWork);
 end;

 procedure TMyThread.DoWork;
 begin
   //Получаем данные
 end;
Ответить с цитированием
  #6  
Старый 17.04.2011, 14:11
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Неподарок
А если попробывать так?

Код:
type
   TMyThread = class(TThread)
   private
     { Private declarations }
   protected
     procedure DoWork;
     procedure Execute; override;
   end;

 implementation

 procedure TMyThread.Execute;
 begin
   while not Terminated do
     Synchronize(DoWork);
 end;

 procedure TMyThread.DoWork;
 begin
   //Получаем данные
 end;
смысл потока тогда?)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 17.04.2011, 14:14
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Цитата:
Synchronize(Method: TThreadMethod) - синхронизирует выполнение метода процесса, позволяя ему работать параллельно с другими процессами.

написал в асю тебе, авторизуй
Ответить с цитированием
  #8  
Старый 17.04.2011, 14:26
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

разобрался, спасибо!
Ответить с цитированием
  #9  
Старый 17.04.2011, 14:41
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

А как сообразить, чтобы указанные процедуры выполнялись каждые 25 секунд?
Ответить с цитированием
  #10  
Старый 17.04.2011, 15:31
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

обработчик таймера:
Код:
TStatusThread.Create;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:15.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025