Maximus

Пользователи
  • Публикации

    67
  • Зарегистрирован

  • Посещение

  • Days Won

    6

Maximus last won the day on 23 октября

Maximus had the most liked content!

О Maximus

  • Звание
    Продвинутый пользователь

Контакты

  • Сайт
    www.netlights.ru

Информация

  • Пол
    Мужчина
  • Город
    Воронеж

Посетители профиля

498 просмотров профиля
  1. Активно использую Post с двумя параметрами: адрес и список параметров. На стороне скрипта специально useragent не проверял, но по логам он всегда присутствует и никаких проблем с ним нет.
  2. Прям немедленно остановить нельзя, но можно вызвать метод Cancel var Task : ITask; ... Task := TTask.Run(...); ... Task.Cancel; //когда нужно остановить А внутри таска сделать проверки, что если выполняется Task.Status = TTaskStatus.Canceled то не нужно обновлять данные, там где вы их обновляете и досрочно закончить работу кода таска.
  3. Смотря к каким данным вы обращаетесь. На самом деле синхронизировать нужно любые обращения к разделяемым ресурсам. Если теми данными, что на форме или где-то ещё, пользуется другой поток, то доступ к ним должен быть синхронизирован. Если вы их только читаете, измениться они не могут и делаете это только в показанном потоке, то можно не синхронизировать Но вот это же точно визуальный элемент? Form1.ConnectImage.Bitmap := Form1.IconList.Bitmap(Size, localicon); Тогда это уже менее страшно, я почему-то подумал, что обращение идёт через HTTP. TCPClient не имеет такой возможности, только самостоятельно потоки делать.
  4. На первый взгляд можно заметить следующее: 1. Обращение к форме из потока без синхронизации l := Length(Form1.RoomElements); E := Form1.RoomElements[j]; Так делать нельзя. SendHTTPMessage - тоже самое. 2. Таймер не останавливается на время работы потока, судя по всему. Если поток не успеет отработать за секунду, как вы написали, может запуститься второй и третий. Возможно так и задумано, но если учесть, что все они обращаются к форме без синхронизации всё это печально кончится. 3. У вас сколько объектов по которому цикл проходит каждую секунду? И для каждого объекта вызывается Get запрос на веб сервер? Бедный сервер. Данные нужно получать сразу для всех объектов, и уже в клиенте разбирать, что вам нужно, а что нет. А иначе ваши клиенты положат вам ваш же сервер рано или поздно. 4. Уже несколько версий существует TNetHttpClient и THTTPClient, которые могут асинхронно отправлять запросы на веб сервер, а значит поток вообще создавать не нужно.
  5. windows

    На самом деле это поведение можно достаточно просто отключить var Connect : TFDConnection; Query : TFDQuery; ... Connect.ResourceOptions.SilentMode := true; Query.ResourceOptions.SilentMode := true; ...
  6. Да, нужно либо обновиться на Токио, либо применить фикс, который есть в комментариях на первой странице. На торрентах бесплатно продают, скачайте и вынимайте оттуда любые модули, которые нужны.
  7. Есть вот такой вот комментарий принципиально поводу создания FMX внутри библиотеки http://forum.vingrad.ru/index.php?showtopic=380246&view=findpost&p=2626848
  8. Нет, не по умолчанию, это косяк в скрипте. Я так понимаю запрос заработал, в чём же была проблема?
  9. Что значит ничего? Покажите ошибку. Доступ в сеть для программы ничего не блокирует, антивирус например?
  10. Работает всё Другие сайты грузит, яндекс, гугл?
  11. Вкратце вот здесь можно почитать http://proghouse.ru/programming/36-delphi-xe7-ppl Например, если таск организован как бесконечный цикл, то после завершения каждого таска, в главном потоке увеличивать счётчик. Как только он станет равным количеству запущенных, можно будет обновлять информацию на экране и делать повторный запуск. Разумеется доступ к главному потоку должен быть синхронизирован. А если в таске конечная последовательность действий, то можно просто проверять статусы всех тасков. Логично. WaitForAll приостанавливает поток в котором был вызван до тех пор, пока не будут завершены все таски.
  12. Во-первых ни в коем случае нельзя обращаться к визуальным компонентам напрямую без синхронизации, да и вообще к любым разделяемым ресурсам. Во-вторых deadlock в FMX ничем не отличается от deadlock на VCL или на WinAPI, почитать можно здесь http://forum.vingrad.ru/topic-60076.html Конкретно в приведённом примере достаточно обернуть изменение метки в Synchronize TThread.Synchronize(nil, procedure begin Form4.Label1.Text:=i.ToString; end); и после запуска потока вызывать MyThread.WaitFor; - получите deadlock.
  13. windows

    На FMX этот компонент не завезли, студия же на VCL написана. В FMX можно попробовать заменить на TMenuBar.
  14. windows

    Меню RAD Studio сделано на TActionMainMenuBar.