public delegate int delegateInteiro();public event delegateInteiro eventoInteiro; public class MeuEventArgs : EventArgs
{
public readonly int _dia;
public readonly int _mes;
public readonly int _ano;
public MeuEventArgs(int dia, int mes, int ano)
{
this._dia = dia;
this._mes = mes;
this._ano = ano;
}
} struct structData {
public int dia;
public int mes;
public int ano;
} public class PassagemDeTempo
{
// Note que estamos iniciando o mes com o valor 11 e o ano com o valor 1900.
private int _dia;
private int _mes = 11;
private int _ano = 1900;
private structData _data = new structData();
// Declaramos nosso delegado para encapsular os metodos.
public delegate void PassagemDeTempoHandler(object sender, MeuEventArgs e);
// Nosso evento, onde passaremos nosso delegado com seu método encapsulado.
public event PassagemDeTempoHandler OnPassagemDeTempo;
// Iniciando a passagem de tempo.
public void IniciarPassagem() {
for (;;)
{
// Aqui estamos dando um intervalo de ½ seg. para podermos ver essa assagem
Thread.Sleep(500);
// Gerando os dias,meses e anos e abastecendo nossa estrutura
_data.mes = gerarMes(_mes);
_data.dia = gerarDias(_dia);
_data.ano = gerarAno(_ano);
Sempre que passar um dia chamaremos nosso evento.
if (_data.dia != _dia)
{
MeuEventArgs eve = new MeuEventArgs(_data.dia, _data.mes, _data.ano);
if (OnPassagemDeTempo != null)
{
OnPassagemDeTempo(this, eve);
}
}
this._dia = _data.dia;
this._mes = _data.mes;
this._ano = _data.ano;
}
}
// os metodos abaixo são apenas tratamentos.
private int gerarDias(int dia){
if (dia >= 31) return 1;
return ++dia;
}
private int gerarMes(int mes){
if (_dia >= 31)
{
if (mes >= 12) return 1;
return ++mes;
}
else
return mes;
}
public int gerarAno(int ano) {
if (_mes == 12 && _dia == 31)
return ++ano;
else
return ano;
}
}
// Aqui em nossa classe MostrarPassagemDeTempo que exibimos os dias passando.
public class MostrarPassagemDeTempo
{
public void Subscribers(PassagemDeTempo _tempo)
{
//Arqui estamos encapsulando a funcao que mostra a passagem de tempo.
// note que estamos abastecendo um evento.
_tempo.OnPassagemDeTempo += new PassagemDeTempo.PassagemDeTempoHandler(Mostrar);
}
public void Mostrar(object sender,MeuEventArgs e)
{
Console.WriteLine("{0}/{1}/{2}", e._dia, e._mes, e._ano);
}
}
} PassagemDeTempo PassTmp = new PassagemDeTempo();
MostrarPassagemDeTempo MosPassTmp = new MostrarPassagemDeTempo();
MosPassTmp.Subscribers(PassTmp);
PassTmp.IniciarPassagem();
![]() |
CodigoFonte.net » CodigoFonte.eti.br » Procurando o que comprar? » MeuMural.com.br » Todos os Direitos Reservados © 2002/2008 |
Procurando Notebooks, Câmeras Digitais, iPhones?