Classe para facilitar a criação de Threads Anônimos em seu projeto
Basta cadastrar no Library Path do seu Delphi o caminho da pasta SOURCE da biblioteca, ou se preferir, você pode usar o Boss (gerenciador de dependências do Delphi) para realizar a instalação:
boss install github.com/adrianosantostreina/CustomThread
A unit CustomThread tem uma classe TLib que implementa o método CustomThread. Possui os seguintes parâmetros:
class procedure TLib.CustomThread(
AOnStart,
AOnProcess,
AOnComplete: TProc;
AOnError: TProcedureExcept;
const ADoCompleteWithError: Boolean
);
- AOnStart = Processos a serem executados antes do processo principal
- AOnProcess = Processo principal
- AOnComplete = Processos a serem executados após o processo principal
- AOnError = Processo a ser executado se ocorrerem erros
- ADoCompleteWithError = Mensagem de exceção disparada se ocorrer erro
Declare CustomThread na seção Uses da unit onde você deseja fazer a chamada para o método da classe.
uses
CustomThread,
procedure TForm2.Button1Click(Sender: TObject);
begin
TLib.CustomThread(
procedure()
begin
//Processes to run before the main process
end,
procedure()
begin
//Main Process
end,
procedure()
begin
//Processes to run after the main process
end,
procedure(const AException: string)
begin
//Process to run if errors occur
end,
True
);
end;
[...]
private
{ Private declarations }
StepUnit: Single;
Step : Single;
[...]
procedure TForm2.FormCreate(Sender: TObject);
begin
StepUnit := 0;
Step := 0;
recProgress.Width := 0;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
TLib.CustomThread(
procedure()
begin
//Processes to run before the main process
StepUnit := (recBack.Width / 10);
recProgress.Width := Step;
end,
procedure()
begin
//Main Process
repeat
Step := Step + StepUnit;
TThread.Synchronize(
TThread.CurrentThread,
procedure ()
begin
Sleep(100);
recProgress.Width := Step;
end
);
until recProgress.Width >= recBack.Width;
end,
procedure()
begin
//Processes to run after the main process
Step := 0;
end,
procedure(const AException: string)
begin
//Process to run if errors occur
end,
True
);
end;
CustomThread
é uma biblioteca gratuita e de código aberto licenciada sob a Licença MIT.