Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Hashtable di Eventi

    E' possibile creare un Hashtable che contiene degli eventi ?
    Io ho provato a fare una cosa del genere (Vedi Codice sotto)...
    ma ovviamente non funziona
    Qualcuno mi sa dare una mano?

    Grazie.

    codice:
    using System;
    using System.Collections;
    
    public class Test {
    	public delegate void MyHandler (object sender, int n);
    	
    	public static Hashtable eventi = new Hashtable();
    	
    	public static void TestHandler () {
    		MyHandler e = null;
    		for (int i=0; i < 10; i++) {
    			if ((i % 2) == 0) {
    				e = (MyHandler) eventi["evento1"];
    				if (e != null) e(null, i);
    			} else {
    				e = (MyHandler) eventi["evento2"];
    				if (e != null) e(null, i);
    			}
    		}
    	}
    	
    	public static void OnEvent1 (object sender, int n) {
    		Console.WriteLine("OnEvent1(): {0}", n);
    	}
    	public static void OnEvent2 (object sender, int n) {
    		Console.WriteLine("OnEvent2(): {0}", n);
    	}
    	
    	public static void Main (string[] args) {
    		eventi.Add("evento1", null);
    		eventi.Add("evento2", null);
    		
    		MyHandler e = (MyHandler) eventi["evento1"];
    		e += new MyHandler(OnEvent1);
    		
    		e = (MyHandler) eventi["evento2"];
    		e += new MyHandler(OnEvent2);
    		TestHandler();		
    	}
    }

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da _sys/sid
    ma ovviamente non funziona
    Cioè? Errori di qualche tipo? Comportamento diverso da quello aspettato?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    il mio codice non fa quello che dovrebbe fare...
    Cioe'... non vengono lanciati i due metodi.

  4. #4
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299

    Re: Hashtable di Eventi

    Sembra sia una questione di puntatori... Funziona se reinserisci "e" nelle hashtable:

    codice:
    using System;
    using System.Collections;
    
    public class Test {
    	public delegate void MyHandler (object sender, int n);
    	
    	public static Hashtable eventi = new Hashtable();
    	
    	public static void TestHandler () {
    		MyHandler e = null;
    		for (int i=0; i < 10; i++) {
    			if ((i % 2) == 0) {
    				e = (MyHandler) eventi["evento1"];
    				if (e != null) e(null, i);
    			} else {
    				e = (MyHandler) eventi["evento2"];
    				if (e != null) e(null, i);
    			}
    		}
    	}
    	
    	public static void OnEvent1 (object sender, int n) {
    		Console.WriteLine("OnEvent1(): {0}", n);
    	}
    	public static void OnEvent2 (object sender, int n) {
    		Console.WriteLine("OnEvent2(): {0}", n);
    	}
    	
    	public static void Main (string[] args) {
    		eventi.Add("evento1", null);
    		eventi.Add("evento2", null);
    		
    		MyHandler e = (MyHandler) eventi["evento1"];
    		e += new MyHandler(OnEvent1);
    
                                    eventi["evento1"] = e;    ////////// <======= QUI
    		
    		e = (MyHandler) eventi["evento2"];
    		e += new MyHandler(OnEvent2);
    
                                    eventi["evento2"] = e;    ////////// <======= E QUI
    
    		TestHandler();		
    	}
    }
    Svegliati, Neo. Matrix ti possiede...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.