Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Chiudere una form
Forum - C# / VB.NET - Chiudere una form

Avatar
fosforo (Normal User)
Expert


Messaggi: 346
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 14:50
Venerdì, 25/05/2018
Ciao

Ho sulla Form principale una chiamata a una classe esterna.
Gcommad EGc = new Gcommad(EvPath, Folder)

La classe esterna per fare i calcoli desiderati ci mette circa 1 minuto cosi
ho creato una seconda Form che vorrei usare come WAIT Form e la chiamo cosi:
WaitForm f2 = new WaitForm();
f2.Show();

Il problema è che mi blocca la Form principale e non riesco a più chiuderla.
Ho provato con:
f2.Close();
ma non si chiude, è come se inibisse ogni azione della form principale.

PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 869
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 15:27
Venerdì, 25/05/2018
Testo quotato

Postato originariamente da fosforo:

Ciao

Ho sulla Form principale una chiamata a una classe esterna.
Gcommad EGc = new Gcommad(EvPath, Folder)

La classe esterna per fare i calcoli desiderati ci mette circa 1 minuto cosi
ho creato una seconda Form che vorrei usare come WAIT Form e la chiamo cosi:
WaitForm f2 = new WaitForm();
f2.Show();

Il problema è che mi blocca la Form principale e non riesco a più chiuderla.
Ho provato con:
f2.Close();
ma non si chiude, è come se inibisse ogni azione della form principale.



Usa un Thread asincrono per fare i calcoli

quando la Funzione termina i calcoli deve chiudere il Wait_Form e ripristinare il Form principale

Ultima modifica effettuata da Ultimo il 25/05/2018 alle 15:28


If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 346
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 15:41
Venerdì, 25/05/2018
Aiuto….
Come si usa un Thread asincrono?

PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 869
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 15:55
Venerdì, 25/05/2018
Testo quotato

Postato originariamente da fosforo:

Aiuto….
Come si usa un Thread asincrono?



If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2023
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 17:51
Venerdì, 25/05/2018
Testo quotato

Postato originariamente da fosforo:

Ciao

Ho sulla Form principale una chiamata a una classe esterna.
Gcommad EGc = new Gcommad(EvPath, Folder)

La classe esterna per fare i calcoli desiderati ci mette circa 1 minuto cosi
ho creato una seconda Form che vorrei usare come WAIT Form e la chiamo cosi:
WaitForm f2 = new WaitForm();
f2.Show();

Il problema è che mi blocca la Form principale e non riesco a più chiuderla.
Ho provato con:
f2.Close();
ma non si chiude, è come se inibisse ogni azione della form principale.




Codice sorgente - presumibilmente C++

  1. //Form1
  2.  
  3.  
  4. Thread thread = new Thread(Wait);
  5. thread.start();
  6.  
  7.  
  8.  
  9. void Wait()
  10. {
  11.     WaitForm f = new WaitForm();
  12.     f.callback = this;
  13.     f.Show();
  14. }
  15.  
  16.  
  17. void Completato()
  18. {
  19.  
  20.  thread.stop();
  21.  thread.dispose();
  22. }
  23.  
  24.  
  25.  
  26. ///Form2
  27.  
  28. public Form callback;
  29.  
  30. void Calcoli()
  31. {
  32.  
  33.   Invoke((Action)delegate{ callback.Completato(); });
  34.    
  35. }



non ho testato ma dovrebbe andare.
forse al thread.stop andrebbe anche chiuso il form2 ma stoppando il thread dovrebbe chiuderlo
automaticamente.
fai qualche prova.

Ultima modifica effettuata da Thejuster il 25/05/2018 alle 17:55


PM Quote