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

    [C#] Problema Costruttore/Oggetto/Evento

    Buonasera a tutti,


    sono giorni che tento di capire il motivo per cui, nella mia console application, un evento non venga intercettato.


    PREMESSA:

    Sto sviluppando tramite una SDK di un video management system le cui librerie sono sviluppate per VB.

    Detto questo, i metodi sono compatibili al 100% su Windows Form Application, questo perchè il meccanismo di Message Pump è ereditato appunto da Systems Forms.

    Il mio intento è però sviluppare una console application, quindi quello che ho fatto è stato comunque l'implementazione di una classe che ereditasse da Form, per poi nascondere la form e quindi renderla invisibile.

    FINE PREMESSA.


    La classe che utilizzo ha 2 costruttori dove vengono instanziati 2 oggetti differenti (ovvero: nel primo un oggetto e nel secondo un altro oggetto differente).

    Il punto è che in seguito, il primo oggetto instanziato dal primo costruttore, è necessario per instanziare, tramite il secondo costruttore, il secondo oggetto.

    La mia paura è che quando chiamo il secondo costruttore, l'instanza del primo oggetto venga in qualche modo alterata, creando problemi all'instanza del secondo oggetto, che quindi non è in grado di intercettare gli eventi.


    Credo che il problema sia in fase di dichiarazione iniziale degli oggetti.....forse......non sono esperto e dunque chiedo a voi se il problema potrebbe essere proprio questo.

    Entrambi sono private static.





    Grazie in anticipo!!!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dietro tutta questa spiegazione c'è un codice da visionare ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Chiedo scusa!

    Di seguito la classe che implementa i costruttori:

    codice:
    public partial class CLASSE : Form
        {
            private static TYPE1 OGGETTO1;
            private static TYPE2 OGGETTO2;
            
            public COSTRUTTORE(bool param)
            {
                if (param)
                {
                    variable = true;
                }
            }
    
            public COSTRUTTORE(string param1, string param2)
            {
                var1 = param1;
    
                var2 = param2;
            }
    
            private void Form_Load(object sender, EventArgs e)
            {
                OGGETTO1 = new TYPE1();
                OGGETTO1.CreateInstance();
            }
    
            public void Start(type? param)
            {
                OGGETTO2 = new TYPE2();
    
                OGGETTO2.EVENT += new _EventHandler(OGGETTO2_EVENT);
    
                OGGETTO2.CreateInstance(OGGETTO1);
    
                OGGETTO2.StartVideo();
    
            }
    
            void OGGETTO2_EVENT()
            {
               //some code
            }
    }
    Ora invece il codice che chiama i costruttori:

    codice:
    protected override void OnXXXX()
            {
                var variable = new CLASS(param);
                //some code
            }
    
    protected override void OnYYYY()
            {
                var = new CLASS(param1, param2);
    
                var.Start();
            }

    Spero si capisca, non ho potuto mettere il codice in chiaro per motivi di privacy.


    Grazie

  4. #4
    Nessuna idea?


  5. #5
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    non te ne sei accorto ma in realtà nel primo post non hai detto qual'è il problema

    Visto che OGGETTO 1 e 2 sono static ma tu crei due istanze di CLASSE fai attenzione a che i costruttori dei due oggetti non vengano richiamati due volte anche non volendo (per esempio attraverso il from_load). Metti dei punti di interruzione nei metodi che creano istanze di questi oggetti ed esegui in debug. Poi in start, ad OGGETTO 2, io prima richiamerei CreateIstance e poi gli assegnerei l'evento piuttosto che il contrario.

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.