Quantcast
Channel: O que é uma delegate?
Viewing all articles
Browse latest Browse all 8

O que é uma delegate?

$
0
0
 

Não à um evento... à um metodo... voce usar delegates para declarar um evento tambem... mas isso pq todo evento disparam um metodo... existem casos que vc usa delegates que não necessariamente estão envolvidos com eventos...

Por exemplo... vc pode passar um delegate como um paramentro de um metodo para ser executado no final da operação em processos assincronos... ou para outras coisas...

Veja esse exemplo, aqui eu uso um delegate para registrar o andamento de um processo, veja q o metodo Console.WriteLine não é um evento....

Namespace WindowsFormsApplication1NotInheritableClass ProgramPrivateSubNew()EndSubPrivateSharedSub Main()Dim classe1 AsNew Classe1()
			classe1.ExecutarSerieDeProcessos(AddressOf Console.WriteLine)
			Console.ReadKey()EndSubEndClassPublicDelegateSub AtualizarLog(mensagem AsString)PublicClass Classe1PublicSub ExecutarSerieDeProcessos(atualizarLog As AtualizarLog)RaiseEvent atualizarLog("Iniciando um processo")' Faz um processoTryCatch e As ExceptionRaiseEvent atualizarLog("Erro: "& e.Message)EndTryRaiseEvent atualizarLog("Um processo concluido")RaiseEvent atualizarLog("Iniciando outro processo")' Faz outro processoTryCatch e As ExceptionRaiseEvent atualizarLog("Erro: "& e.Message)EndTryRaiseEvent atualizarLog("Outro processo concluido")RaiseEvent atualizarLog("Iniciando mais um processo")' Faz mais um processoTryCatch e As ExceptionRaiseEvent atualizarLog("Erro: "& e.Message)EndTryRaiseEvent atualizarLog("Mais um processo concluido")EndSubEndClassEndNamespace

 

using System;

namespace WindowsFormsApplication1 {
 static class Program {
  static void Main() {
   Classe1 classe1 = new Classe1();
   classe1.ExecutarSerieDeProcessos(Console.WriteLine);
   Console.ReadKey();
  }  
 }

 public delegate void AtualizarLog(string mensagem);

 public class Classe1 {
  public void ExecutarSerieDeProcessos(AtualizarLog atualizarLog) {
   if (atualizarLog != null) atualizarLog("Iniciando um processo");
   try {
    // Faz um processo
   } catch (Exception e) {
    if (atualizarLog != null) atualizarLog("Erro: " + e.Message);
   }
   if (atualizarLog != null) atualizarLog("Um processo concluido");

   if (atualizarLog != null) atualizarLog("Iniciando outro processo");
   try {
    // Faz outro processo
   } catch (Exception e) {
    if (atualizarLog != null) atualizarLog("Erro: " + e.Message);
   }
   if (atualizarLog != null) atualizarLog("Outro processo concluido");

   if (atualizarLog != null) atualizarLog("Iniciando mais um processo");
   try {
    // Faz mais um processo
   } catch (Exception e) {
    if (atualizarLog != null) atualizarLog("Erro: " + e.Message);
   }
   if (atualizarLog != null) atualizarLog("Mais um processo concluido");
  }
 }
}

Viewing all articles
Browse latest Browse all 8

Latest Images

Trending Articles





Latest Images