duvidas threads
Boa noite a todos.
Estou começando a trabalhar com threads.
Fiz uma thread que fica dando um refresh em uma query minha.
quando ele da refresh o mouse muda como se estivesse pensando e da uma travada no meu programa.
gostaria de saber se isso é normal, se tem alguma programação na thread para nao fazer isso.
Uso firedac e firebird.
Obrigado desde ja
Tiago W. Schneider
Estou começando a trabalhar com threads.
Fiz uma thread que fica dando um refresh em uma query minha.
quando ele da refresh o mouse muda como se estivesse pensando e da uma travada no meu programa.
gostaria de saber se isso é normal, se tem alguma programação na thread para nao fazer isso.
Uso firedac e firebird.
Obrigado desde ja
Tiago W. Schneider
Tiago Schneider
Curtidas 0
Respostas
Raylan Zibel
05/05/2016
Precisa mostrar o código pra obter melhor ajuda. Não tem mágica.
GOSTEI 0
Tiago Schneider
05/05/2016
certo raylan ja posto .
obrigado
obrigado
GOSTEI 0
Tiago Schneider
05/05/2016
este é o codigo na minha thread.
unit uimportaabas;
interface
uses
System.Classes, Vcl.Dialogs,
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.ExtCtrls, JvExExtCtrls,
JvExtComponent, JvPanel, Vcl.Buttons, Vcl.StdCtrls, Vcl.ComCtrls;
type
importaAbas = class(TThread)
private
{ Private declarations }
index:integer;
protected
procedure p_atualizar;
procedure Execute; override;
public
constructor create(p_val:integer); overload;
destructor destroy(); override;
end;
implementation
uses udiversos_abastecimentos, udmpri;
constructor importaAbas.create(p_val: Integer);
begin
inherited create(true);
FreeOnTerminate := true;
index := p_val;
end;
destructor importaAbas.Destroy;
begin
inherited
end;
procedure importaAbas.p_atualizar;
begin
inherited;
try
p_abas_andamento;
dmpri.que_pisaba.Refresh;
finally
end;
end;
procedure importaAbas.Execute;
var
c_tex:TextFile;
begin
inherited;
Priority := tpNormal;
try
while not Self.Terminated do
begin
Application.processmessages;
if Terminated then
abort;
Synchronize(p_atualizar);
Sleep(3000);
end;
except
on E: Exception do
begin
AssignFile(c_tex, 'logerros\'+DateTimeToStr(now)+'.log');
Rewrite(c_tex);
writeln(c_tex,e.Message);
CloseFile(c_tex);
end;
end;
end;
unit uimportaabas;
interface
uses
System.Classes, Vcl.Dialogs,
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.ExtCtrls, JvExExtCtrls,
JvExtComponent, JvPanel, Vcl.Buttons, Vcl.StdCtrls, Vcl.ComCtrls;
type
importaAbas = class(TThread)
private
{ Private declarations }
index:integer;
protected
procedure p_atualizar;
procedure Execute; override;
public
constructor create(p_val:integer); overload;
destructor destroy(); override;
end;
implementation
uses udiversos_abastecimentos, udmpri;
constructor importaAbas.create(p_val: Integer);
begin
inherited create(true);
FreeOnTerminate := true;
index := p_val;
end;
destructor importaAbas.Destroy;
begin
inherited
end;
procedure importaAbas.p_atualizar;
begin
inherited;
try
p_abas_andamento;
dmpri.que_pisaba.Refresh;
finally
end;
end;
procedure importaAbas.Execute;
var
c_tex:TextFile;
begin
inherited;
Priority := tpNormal;
try
while not Self.Terminated do
begin
Application.processmessages;
if Terminated then
abort;
Synchronize(p_atualizar);
Sleep(3000);
end;
except
on E: Exception do
begin
AssignFile(c_tex, 'logerros\'+DateTimeToStr(now)+'.log');
Rewrite(c_tex);
writeln(c_tex,e.Message);
CloseFile(c_tex);
end;
end;
end;
GOSTEI 0
Tiago Schneider
05/05/2016
uppp
GOSTEI 0