1. Claseca17.07.2024 в 23:15от
Загрузка...

Delphi Support

Тема в разделе "С/С++/Pascal/Delphi", создана пользователем MDK, 25.07.2013.

  1. XCoder

    XCoder

    Статус:
    Оффлайн
    Регистрация:
    26.07.13
    Сообщения:
    151
    Репутация:
    11 +/-
    А если брякнуть? Break ...:victory:
     
  2. Подарок

    Подарок

    Статус:
    Оффлайн
    Регистрация:
    27.07.12
    Сообщения:
    1.443
    Репутация:
    357 +/-
    Не выход, цикл же в потоке, ну выйдет поток из цикла, а дальше, до уничтожения пройдёт не мало времени, если уничтожение будет плавное. А остановка подразумивает моментальное. А если даже уничтожется, например я хочу остановить, что бы таймаут поменять и дальше запустить.
     
  3. XCoder

    XCoder

    Статус:
    Оффлайн
    Регистрация:
    26.07.13
    Сообщения:
    151
    Репутация:
    11 +/-
    В это случае думаю пауза предусмотрена , то есть Suspended.
    Может быть так сделать, Work:=false goto и на разрушение потока.
     
  4. Nikon

    Nikon

    Статус:
    Оффлайн
    Регистрация:
    01.02.13
    Сообщения:
    351
    Репутация:
    401 +/-
    тут все зависит от того, как ты создаешь потоки. как и идет работа в потоке.
    если ты создаешь поток таким образом ( пример )
    Код:
    var MyThread: TMythread; // тут ты объявляешь переменную с типом названия потока
    MyThread:=TMyThread.Create(true); // что значит true или false. Если в параметрах данного метода стоит true, то поток будет запущен только после того, как ты запустишь его через Resume. Если стоит false, то поток начнет свою работу сразу после создания.
    MyThread.Resume; // это приводит поток в работу
    Чтобы остановить поток, запущенный через Resume, и с методом создания true, нужно всего лишь прописать:
    Код:
    MyThread.Terminate; // это убьет поток
    MyThread.Suspend; // это поставит поток на паузу
     
  5. Nikon

    Nikon

    Статус:
    Оффлайн
    Регистрация:
    01.02.13
    Сообщения:
    351
    Репутация:
    401 +/-
    если приложение многопоточное, то остановить потоки можно циклом:
    Код:
    for i:=0 to Thread do begin
    Thread:=-1;
    end;
    Этот цикл будет вычитать 1 поток, пока количество потоков, созданное приложение не станет равным нулю. Когда потоки будут равны нулю, работа потоков будет остановлена.
     
  6. XCoder

    XCoder

    Статус:
    Оффлайн
    Регистрация:
    26.07.13
    Сообщения:
    151
    Репутация:
    11 +/-
    Вопрос в том ,как мгновенно остановить потоки... Без постепенного завершения.
     
  7. Nikon

    Nikon

    Статус:
    Оффлайн
    Регистрация:
    01.02.13
    Сообщения:
    351
    Репутация:
    401 +/-
    читай внимательно сообщение мое!
     
  8. XCoder

    XCoder

    Статус:
    Оффлайн
    Регистрация:
    26.07.13
    Сообщения:
    151
    Репутация:
    11 +/-
    Я все читал внимательно. Если останавливать циклом. Это постепенная остановка. А Terminate всего лишь вызывает процедуру Terminated которая так же постепенно завершает и уничтожает потоки. Я уже предложил бряк + гото. Думаю сойдёт
     
  9. Nikon

    Nikon

    Статус:
    Оффлайн
    Регистрация:
    01.02.13
    Сообщения:
    351
    Репутация:
    401 +/-
    остановить потоки мгновенно невозможно. если только убить программу
    бряк не сработает
     
  10. XCoder

    XCoder

    Статус:
    Оффлайн
    Регистрация:
    26.07.13
    Сообщения:
    151
    Репутация:
    11 +/-
    Бряк сработает визуально и только. То есть если в мемо выводился список, кинуть бряк, остановка, и разрушение потоков , уже не заметно для глаза.
     
  11. Подарок

    Подарок

    Статус:
    Оффлайн
    Регистрация:
    27.07.12
    Сообщения:
    1.443
    Репутация:
    357 +/-
    Мгновенно нет, но несколько миллисекунд займёт засыпание потоков, не более. Времени надо ровно столько, сколько ОС переключиться между потоками и выделить им процессорного времени.
     
  12. XCoder

    XCoder

    Статус:
    Оффлайн
    Регистрация:
    26.07.13
    Сообщения:
    151
    Репутация:
    11 +/-
    Так что мне делать с чатом то? Как засунуть его в форму дельфи? :D
     
  13. Nikon

    Nikon

    Статус:
    Оффлайн
    Регистрация:
    01.02.13
    Сообщения:
    351
    Репутация:
    401 +/-
    если только создать мемо и в него выводить сообщения пользователей.