Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

[Delphi] Потоки

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 14.03.2015, 23:12   #1
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию [Delphi] Потоки

Создаю поток, который проигрывает mp3.
Код:
  mPotok3:=Potok3.Create(False);
  mPotok3.Priority:=tpNormal;
При закрытии приложения получаю ошибки.
[Ссылки могут видеть только зарегистрированные пользователи. ]
Перепробовал разные варианты при создании формы - в итоге ошибка.
А если поток создать в обработчике кнопки и запустить его - форма нормально закрывается.
  Ответить с цитированием
Старый 14.03.2015, 23:20   #2
 Пехотинец
Аватар для NebesaBag
 
NebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражания
Регистрация: 27.12.2011
Сообщений: 73
Популярность: 2425
Сказал(а) спасибо: 334
Поблагодарили 57 раз(а) в 27 сообщениях
 
По умолчанию Re: [Delphi] Потоки

Скриншот не видно.
Поток вы освобождаете?
FreeAndNil(mPotok3);
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]

Пишу софт на заказ(Delphi / C# / PHP-скрипты). Описывайте задачи и цели софта, сообщайте сумму на которую рассчитываете.
Skype: vinozavr (Молдова)


Кто плюсует популярность, подписывайтесь пожалуйста)
  Ответить с цитированием
Старый 14.03.2015, 23:40   #3
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию Re: [Delphi] Потоки

Exception EOSError......
System Error. Code:1400
Недоступный дескриптор окна.

Цитата:
FreeAndNil(mPotok3);

Где его освобождать?

Вот сам поток.
Код:
procedure Potok3.Execute();
var
rStream: TResourceStream;
fStream: TFileStream;
fname: string;
begin

begin
  //эта часть извлекает mp3 из exe
  fname := 'resurs/Track.mp3';
  rStream := TResourceStream.Create(hInstance, 'Track', RT_RCDATA) ;
    try
      fStream := TFileStream.Create(fname, fmCreate) ;
        try
          fStream.CopyFrom(rStream, 0) ;
          finally
        fStream.Free;
      end;
    finally
  rStream.Free;
end;
//эта часть проигрывает mp3
FMain.MediaPlayer1.Close;
FMain.MediaPlayer1.FileName:= fname;
FMain.MediaPlayer1.Open;
FMain.MediaPlayer1.Play;
end;
end;
Добавлено через 29 минут
На самом деле проблема с потоками

Добавлено через 2 часа 11 минут
По сути всего, у меня не правильно потоки сделаны.
Код:
  mPotok1:=Potok3.Create(False);
  mPotok1.Priority:=tpNormal;
Так мы создаём поток. В этом патоке есть некая функция с некоторыми переменными.
Есть у меня 5 процедур, через которые я передаю глобально переменные(читал что это очень плохо), вариантов пока не вижу других.
И естественно в каждой процедуре использую
Код:
  mPotok1:=Potok3.Create(False);
  mPotok1.Priority:=tpNormal;
Как правильно это всё оформить?

Последний раз редактировалось Dimedrol1536; 15.03.2015 в 01:52. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 15.03.2015, 11:14   #4
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: [Delphi] Потоки

Весь код выкладывать надо, или большие куски, относящиеся к сути вопроса.
Данные лучше всего передавать или в критической секции, или в синхронизированной процедуре, или до запуска потока.

Вообще делается так как в аттаче(создание+освобождение+передача данных синхронизацией).
Вложения
Тип файла: rar Пример потоков.rar (163.7 Кб, 5 просмотров)
  Ответить с цитированием
Пользователь сказал cпасибо:
Dimedrol1536 (15.03.2015)
Старый 15.03.2015, 18:07   #5
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию Re: [Delphi] Потоки

Пошел я по другому пути, через API (BeginThread)
Код:
procedure TFMain.Action9Execute(Sender: TObject);
var
  dwID: dword;
begin
   ThrHandle:=BeginThread(nil, 0, @ThreadFun1, PThreadData(1), 0, dwID);
   if ThrHandle<>0 then
      CloseHandle(ThrHandle);
end;
Если раз 5 запустить, получим краш.
  Ответить с цитированием
Старый 20.03.2015, 21:28   #6
 Старший сержант
Аватар для RenatPro
 
RenatPro скоро будет известенRenatPro скоро будет известенRenatPro скоро будет известенRenatPro скоро будет известен
Регистрация: 30.03.2013
Сообщений: 209
Популярность: 377
Сказал(а) спасибо: 7
Поблагодарили 54 раз(а) в 33 сообщениях
 
По умолчанию Re: [Delphi] Потоки

Цитата:
Сообщение от Dimedrol1536Посмотреть сообщение
Пошел я по другому пути, через API (BeginThread)
Код:
procedure TFMain.Action9Execute(Sender: TObject);
var
  dwID: dword;
begin
   ThrHandle:=BeginThread(nil, 0, @ThreadFun1, PThreadData(1), 0, dwID);
   if ThrHandle<>0 then
      CloseHandle(ThrHandle);
end;
Если раз 5 запустить, получим краш.

Скорей всего тебе это надо кусок из моего компонента вот ссылка http://zhyk.ru/forum/showpost.php?p=5137840&postcount=1 посмотри может поможет я тоже долго мучился)

Цитата:
//удаляем все таймеры из памяти
procedure TLINEAGE.TimFree;
var
i: integer;
begin
Time_Key := nil;
Time_Wnd := nil;
Time_Replace := nil;
Time_Real := nil;
Time_Color := nil;
for i := 1 to High(Timer) do
begin
Timer[i].Enabled := False;
Timer[i].Destroy;
end;
Timer := nil;

end;

________________
Группа вк: [Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Статья] Потоки в Delphi lolwut98 Pascal/Delphi 14 07.04.2013 11:50
[Помогите!] потоки llbumerll Вопросы и ответы, обсуждения 4 31.03.2013 04:21
[Руководство] Настраиваем Delphi 2010/XE, чтобы она выглядела как Delphi 7 RifmoGlas Pascal/Delphi 2 09.02.2013 13:09
[Информация] Помощь в Delphi 7 и в других версиях Delphi Babls77 Pascal/Delphi 4 03.11.2011 21:27

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 00:02.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net