Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C#] Problema Thread

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    168

    [C#] Problema Thread

    Salve ragazzi, vorrei sapere come creare un thread da una form padre per una form figlia...Allora il codice che posto è su un click di un bottone, però mi da il seguente errore:
    codice:
    //Crea il primo thread
    thrd = new Thread(new ThreadStart(MyThreadMethod));
    thrd.Name = "PIPPO";
    //Avvia il primo thread
    thrd.Start();
    
    
    public void MyThreadMethod()
    {
         f_figlio = new FORMFIGLIA();
         f_figlio.Owner = this;
         f_figlio.Show();
    }
    Sul f_figlio.show() mi genera questo tipo di errore.
    Ho letto dei forum in giro ma non sono riuscito ad applicare il ciò al mio utilizzo.
    ERRORE:
    codice:
    Operazione cross-thread non valida: è stato eseguito l'accesso al controllo 'Main' da un thread diverso da quello da cui è stata eseguita la creazione.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    perchè f_figlio è un oggetto del thread principale e quindi non disponibile al secondo thread se non con l'ausilio di delegati..

    perchè l'oggetto non lo istanzi e dichiari dentro il corpo del thread?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    168
    Originariamente inviato da Stoicenko
    perchè f_figlio è un oggetto del thread principale e quindi non disponibile al secondo thread se non con l'ausilio di delegati..

    perchè l'oggetto non lo istanzi e dichiari dentro il corpo del thread?
    Cioè?Scusa non avevo concluso di scrivere.
    Cioè io ho messo all'interno del metodo MyThreadMethod la dichiarazione del form figlio:

    FORMFIGLIO f_figlio;

    ma c'ho non va? perchè?

    Scusami

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    codice:
    //Crea il primo thread
    thrd = new Thread(new ThreadStart(MyThreadMethod));
    thrd.Name = "PIPPO";
    //Avvia il primo thread
    thrd.Start();
    
    
    delegate void MioDel();
    
    MioDel delegato=new MioDel(Logicall_ShowForm);
    
    public void MyThreadMethod()
    {
         f_figlio = new FORMFIGLIA();
         f_figlio.Owner = this;
         delegato();  
    }
    void Logicall_ShowForm()
    {
         f_figlio.Show();
    }
    prova una cosa del genere, dovrebbe andare ma non l'ho neanche testato

  5. #5
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    Originariamente inviato da and87
    Cioè?Scusa non avevo concluso di scrivere.
    Cioè io ho messo all'interno del metodo MyThreadMethod la dichiarazione del form figlio:

    FORMFIGLIO f_figlio;

    ma c'ho non va? perchè?

    Scusami
    codice:
    //Crea il primo thread
    thrd = new Thread(new ThreadStart(MyThreadMethod));
    thrd.Name = "PIPPO";
    //Avvia il primo thread
    thrd.Start();
    
    
    delegate void MioDel(object sender);
    
    MioDel delegato=new MioDel(Logicall_ShowForm);
    
    public void MyThreadMethod()
    {
         FORMFIGLIA f_figlio;
         f_figlio = new FORMFIGLIA();
         f_figlio.Owner = this;
         delegato(f_figlio);  
    }
    void Logicall_ShowForm(object sender)
    {
         FORMFIGLIA f_figlio = (FORMFIGLIA)sender;
         f_figlio.Show();
    }
    nel caso non sia un campo f_figlio devresti fare cosi'

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.