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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Без подсказок, похоже, мне не обойтись, Продолжение проблем с потоком 
:(
    Опции темы
кварк
Дата 6.9.2002, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



*--- Главная форма:
 TForm1 = class(TForm)
   b1: TButton;
   ag: TStringGrid;
   procedure b1Click(Sender: TObject);
 end;

*--- Нажатие на кнопку:
procedure TForm1.b1Click(Sender: TObject);
begin
 b1.Enabled := false;
 with WorkThread.Create(true) do
   try
     sag := ag;
     Resume;
     WaitFor
   finally
     Suspend;
     Free;
     b1.Enabled := true
   end;
end;

*--- Поток:
 WorkThread = class(TThread)
 private
   LogStr : string;
 protected
   procedure Execute; override;
   procedure AddLogStr;
 public
   sag : TStringGrid;
 end;

procedure WorkThread.Execute;
var
 i : integer;
begin
 for i := 1 to 10 do
   begin
     LogStr := IntToStr(i);;
     Synchronize(AddLogStr);
     Sleep(10);
   end;
end;

procedure WorkThread.AddLogStr;
begin
 sag.Cells[0, sag.RowCount-1] := LogStr
 sag.RowCount := sag.RowCount + 1;
end;

*--- Собственно, вопрос:
 Что здесь не так? Это не работает. Причем довольно странно: числа в Grid появляются, а потом вылетает exception "отказано в доступе". Помогите, пожалуйста, разобраться.
PM MAIL   Вверх
кварк
Дата 6.9.2002, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну про отказ в доступе я и затупил!!! Дело в следующем: вызывается Suspend уже отработавшего потока.

Осталась фигня: форма во время выполнения потока подвисает. Буду думать, как от этого избавиться. О! Похоже придумал!
PM MAIL   Вверх
кварк
Дата 6.9.2002, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну все! теперь пример работает как зверь! Даже при перетаскивании/изменении размеров формы числа добавляются! (А, собственно, почему бы и нет).

В общем, извините - какой-то разговор сам с собой получился. Зато задача решена.
PM MAIL   Вверх
Алекс С.
  Дата 6.9.2002, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как сделал перерисовку окна, если не секрет?
PM MAIL   Вверх
кварк
Дата 6.9.2002, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не секрет. Там просто ничего делать не надо :). Фишка в том, что по нажатию кнопки поток надо запустить и НЕ ЖАТЬ его завершения. Тогда форма будет все прекрасно перерисовывать и реагировать на события.

Могу этот свой демо-проект кинуть на мыло. Только там  узкое место - закрытие формы в процессе работы потока. Но что-нибудь придумаю.
PM MAIL   Вверх
Алекс С.
Дата 6.9.2002, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
Могу этот свой демо-проект кинуть на мыло.

Будь так добр!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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