Перейти к содержанию
Fire Monkey от А до Я
  • 0

Отладка потоков в DataSnape


zekelive

Вопрос

Добрый день, друзья. В своем проекте использую DataSnape. Обмениваюсь данными с сервером путем отправки таких команд:

ClientModule2.ServerMethods1Client.Number24(a,b,c,e);

Соответственно отправляю какие либо данные в функцию с переменными. Но есть один нюанс. При таком методе отправки интерфейс программы подвисает на момент выполнения операции. Есть ли пути решения, чтобы интерфейс программы не подписал, а функции выполнялись в фоне?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

конечно есть.

  TThread.CreateAnonymousThread(
    procedure()
    begin
      clmClient.ServerMethods1Client.RegisterWare(seWareID.Value, clmClient.DSClientCallbackChannelManager1.ManagerId)
    end).Start;

А при чём тут отладка? ;-)

Изменено пользователем VladimirS
Ссылка на комментарий
  • 0

Когда я заключаю в поток код:

TThread.CreateAnonymousThread(
    procedure()
    begin
ClientModule2.ServerMethods1Client.Number24(a,b,c,e);
    end).Start;

Не подгружаются данные, который заключены в потоке.

Ссылка на комментарий
  • 0

Сделал так:

TThread.Synchronize(TThread.CurrentThread, procedure
begin
//....
end);

Работает! Спасибо)

 

По варианту Владимира, иногда (не всегда) вываливается приложение. Как я понял, его вариант через дочерний поток, не основной. Поэтому и вываливается приложение. 

Ссылка на комментарий
  • 0

Когда я заключаю в поток код:

TThread.CreateAnonymousThread(
    procedure()
    begin
ClientModule2.ServerMethods1Client.Number24(a,b,c,e);
    end).Start;

Не подгружаются данные, который заключены в потоке.

так процедура должна быть рассчитана на использование в многопоточной среде.

У вас там что, работа с базой в геттерах a,b,c,e?

 

Что и куда у вас не подгружается?

Изменено пользователем VladimirS
Ссылка на комментарий
  • 0

или может у вас есть код после Start?

Типа

TThread.CreateAnonymousThread(
    procedure()
    begin
ClientModule2.ServerMethods1Client.Number24(a,b,c,e);
    end).Start;

>>тут что-то делаем с a,b,c,e<<, которые еще в обработке потоком?

Так вам надо этот код туда же в поток добавить

TThread.CreateAnonymousThread(
    procedure()
    begin
      ClientModule2.ServerMethods1Client.Number24(a,b,c,e);
       >>тут что-то делаем с a,b,c,e<<, или форму обновляем - вот это уже через Synchronize. 
    end).Start;
Ссылка на комментарий
  • 0

Сейчас все в порядке. Спасибо. В тот момент, когда не грузилось якобы, я упустил один нюанс у себя в проекте, не связанный с потоками, в связи с чем и не грузилось.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...