Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить доступ к методу потока(TThread) из ос, Как получить доступ к методу потока 
:(
    Опции темы
Pcrepair
Дата 30.3.2013, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Добрый день. Есть код
Основной поток:

Код

unit uMain;
interface
uses
  ........

type
   .......

var
  Main: TMain;

implementation
uses uLoader;
{$R *.dfm}

(*Запуск Потока загрузки страницы*)
procedure TMain.Button1Click(Sender: TObject);
var ThreadLoder: TLoader;
begin
  ThreadLoder:=Tloader.Create(Edit1.Text);
end;

(*Принудительная остановка процесса загрузки*)
procedure TMain.Button2Click(Sender: TObject);
begin
  //вот тут непонятно, как вызвать метод AbortConnection из запущенного потока  
end;


Поток загрузчика:

Код

unit uLoader;
interface
uses
  Classes, idHTTP, SysUtils, Dialogs,Windows;

type
  TLoader = class(TThread) 
  private
     FUrl:string; 
     FHtml:string;
     FIdHttp:TidHTTP;

  protected
    procedure Execute; override; 
    function LoadHtmlPage(const Url:string):string;
  public
    constructor Create(AStr:string);
    destructor Destroy; override;
    procedure AbortConnection;
  end;

implementation

constructor TLoader.Create(AStr:string);
begin
  inherited Create(False);         (*Поток создаем в состоянии ЗАПУСК*)
  FIdHttp := TIdHTTP.Create(nil);  (*тут же создаем загрузчик*)
  FreeOnTerminate := True;         (* Поток освободит ресурсы при окончании работы*)
  Priority := tpNormal;
  FUrl:=AStr;
end;

destructor TLoader.Destroy;
begin
  FreeAndNil(FIdHttp);
  inherited Destroy; 
end;

(*принудительное отключение TidHttp*)
procedure TLoader.AbortConnection;
begin
 if Assigned(FIdHttp) then  (*если загрузчик запущен*)
 begin
   FIdHttp.Socket.Close;
 end;
end;

function TLoader.LoadHtmlPage(const Url:string):string;
begin
 try
   Result:=FIdHttp.Get(Url);
 except
   Exit;
 end;
end;

procedure TLoader.Execute;
begin
   FHtml:=LoadHtmlPage(FUrl);
end;

end.


Вопрос: как вызвать AbortConnection из основного потока, для принудительного завершения работы TidHttp?
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Illusion Dolphin
Дата 30.3.2013, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Цитата

  //вот тут непонятно, как вызвать метод AbortConnection из запущенного потока  

Надо сделать чтобы поток был FreeOnTerminate := Fase; и хранить на него ссылку и через ссылку вызывать метод. Для освобождения ресурсов можно сделать Call-Back по окончанию работы потока и там уничтожать объект и обнулять ссылку.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Pcrepair
Дата 30.3.2013, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



все понятно, всем спасибо.
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.