Pessoal na verdade não estava com vontade de fazer um Tutorial do tipo pq há muito material na Internet mas a pedido do Acpguedes eu resolvi fazer,então vamos lá.
Primeiro Metodo:
Esse metodo é mais aconselhavel aos iniciantes por ser mais simples de entendimento,mas pode ser um pouco mais demorado na hora de Codar.
No topo da Unit provavelmente vc vera:
;Código:TForm1 = Class(TForm) Private { Private declarations } Public { Public declarations } End
Em cima dessa classe criaremos outra Classe TThread ficando assim :
[Code]
ThreadClass = Class(TThread)
Private
Protected
Procedure Execute; OverRide;
Public
End;
TForm1 = Class(TForm)
Private
{ Private declarations }
Public
{ Public declarations }
End
Como pode ver além de declararmos essa nova Classe ainda declaramos uma Procedure ao Protected,essa Procedure é a parte principal da nossa Thread é nela que iremos colocar os comandos que aconteceram quando nossa Thread for criado,então eu para testar o poder do Multi Threading eu coloquei um Button,e um ProgressBar no Form,se quizer testar podem fazer o mesmo,mas antes vamos declarar a procedure em baixo de "Implementation".
Como podem ver ela possue uma API chamada de Sleep,essa API já foi feita para travar/congelar uma aplicação por um certo tempo e mesmo sendo feito para isso,a aplicação não trava/congela.Código:Procedure ThreadClass.Execute; Begin Repeat Sleep(100); Form1.ProgressBar1.Position:= Form1.ProgressBar1.Position + 10; Until Form1.ProgressBar1.Position = 100; End;
Agora no Evento OnClick do Button adicionaremos:
Quando o botão for Clickado o ProgressBar vai chegar a posição maximo(que no nosso caso é 100) e não se tera nenhum travamento.Código:Var Thread: ThreadClass; Begin Thread:= ThreadClass.Create(True); Thread.FreeOnTerminate:= True; Thread.Resume; End;
Segundo Metodo:
Esse metodo é mais simples,vamos fazer do mesmo modo,colocar um ProgressBar e um Button no Form,e no Evento OnClick do Button adicionaremos:
E agora adicionaremos a função que sera usada por nossa Thread:Código:Var ThreadId: Cardinal; Begin CreateThread(Nil,0,@ThreadFunction,Nil,0,ThreadId); End;
Lembre-se de se adicionar em cima do Evento OnClick do Button,por que caso ao contrario o compilador não conseguiria saber onde está a função,outra não expliquei muito,só mostrei como fazer na pratica,pq no Google tem muito material sobre o mesmo,e se quizerem saber mais é só dar um pesquizada.Código:Procedure ThreadFunction; Begin Repeat Sleep(100); Form1.ProgressBar1.Position:= Form1.ProgressBar1.Position + 10; Until Form1.ProgressBar1.Position = 100; End;
Até a proxima![]()


Responder com Citação

