Visualizzazione dei risultati da 1 a 2 su 2

Discussione: delegati c#

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    140

    delegati c#

    ciao ragazzi,
    ho bisogno di una mano...
    ho un form chiamato form3 in cui ho delle listview. Un altra classe AscoltoAggiunte riceve le modifiche da fare alle listview e deve effettuare gli aggiornamenti delle listview stesse che sono nel form3.
    Essendo in due classi diverse devo utilizzare i delegati per modificare le liste del form3 dall'AscoltoAggiunte?
    Io li ho usati, ma non sempre mi funzionano perchè? A volte aggiungono tranquillamente la voce alla lista altre volte mi da errore.. altre volte nn fa niente. Ho pensato di aver sbagliato il server che ascolta....

    Vi posto il codice:

    codice:
    public class AscoltoAggiunte
        {
         Form3P modifica;
         public AscoltoAggiunte(Form3P mod)
         {
               modifica = mod;
         }
    
         public void avvia()
         {
             try
             {              
                  TcpListener TcpList = new TcpListener(8083);
                  Byte[] bytes = new Byte[256];
                  String str = null;
                  TcpList.Start();
                  while (true)
                  {
                        TcpClient cl = TcpList.AcceptTcpClient();
                        NetworkStream mess = cl.GetStream();
                        int i;
                        while((i=mess.Read(bytes, 0, bytes.Length))!= 0)
                       {
                          // Converto bytes in stringa
                          str = System.Text.Encoding.ASCII.GetString(bytes, 0, i);  
                        }
                       ....
                       elabora la stringa ricevuta
                       ....
                       
                        try{
                             modifica.Invoke(modifica.myDelegate, new Object[] { codice.ToString(), descrizione, categoria });
                           return;
                        }catch(Exception ex){
                           Console.WriteLine("eccezione invoke: {0}", ex.ToString());}
                       
                 cl.Close();
            }//chiuso while
    //chiuso try
    //chiuso avvia
    codice:
     public partial class Form3P : Form
        {
          .....
            public delegate void AddListItem(String codice, String descrizione, String categoria);
            public AddListItem myDelegate;
      
    
            public Form3P(String nFile,String indirizzoS)
            {
                InitializeComponent();
                myDelegate = new AddListItem(AddListItemMethod);
                
                // creo le liste
            }
         //faccio partire ascolto aggiunte
    
    
        public void AddListItemMethod(String codice,String descrizione, String categoria)
            {
                //creo voce per la lista
                ListViewItem f = new ListViewItem(codice.ToString());
                f.SubItems.Add(descrizione);
                f.SubItems.Add("0");
                //aggiungo nella lista corretta
                if (categoria.Equals("EXTRA"))
                {
                    listaExtra.Items.Add(f);
                }
                else if (categoria.Equals("PRIMI"))
                {
                    listaPrimi.Items.Add(f);
                }
                ecc..
             }
            
    
        }
    Grazie

  2. #2
    Ciao, ma perche non chiami direttamente modifica.AddListItemMethod
    anzi che chiamare modifica.Invoke ??

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 © 2025 vBulletin Solutions, Inc. All rights reserved.