2017-02-23 2 views
-1

In Socket-Programmierung, die wir auf Daten warten zu erhalten, zeige ich einen Dialog, mit Show-Methode (i zeigen Sie es nicht mit Show-Dialogmethode, weil Ereignis nicht aufgetreten ist.)enger Dialog in C# warten, wenn ein Ereignis aufgetreten

Psudo Code:

buttonClick() 
{ 
    socket.Send(array byte) 
    waitingForm.Show(); 
} 

recieveCompletedEventHandler() 
{ 
    WaitingForm.Close(); 
} 

Es ist in Ordnung, aber Benutzer das Formular-Steuerelemente zugreifen können und weil die Warte Form nicht ist modal.i nur einen Beispielcode mag, dass, wenn ich Bytes senden und alle Daten empfangen und Ereignis auf, und die Warteform in der Nähe. Und natürlich ist die Wartemode modal, wenn die Daten nicht vollständig empfangen werden.

+1

Ich verstehe nicht, warum nicht können Sie Ihre langen Betrieb im Hintergrund ausgeführt werden, und verwenden Sie 'Showdialog '? –

+0

Könnten Sie mir bitte ein Beispiel geben? – Bobby

+0

kein Beispielcode? – Bobby

Antwort

0

Dank @Ofir Winegarten für Antwort ich eine Probe erstellen und den Code hier setzen für andere

public partial class Form1 : Form 
{ 
    delegate void funDel(); 

    private waiting waitForm; 

    private event funDel funEvent; 
    public Form1() 
    { 
     InitializeComponent(); 
     funEvent += Form1_funEvent; 
    } 

    private void Form1_funEvent() 
    { 

     waitForm.Close(); 
    } 

    private void buttonStart_Click(object sender, EventArgs e) 
    { 
     Task.Run(() => 
     { 
      if (InvokeRequired) // Line #1 
      { 
       this.Invoke(new MethodInvoker(() => button1.Text = "Proccessing")); 

      } 

      else 
      { 
       button1.Text = "Proccessing"; 
      } 

     }); 

     waitForm = new waiting(); 
     timer1.Start(); 
     waitForm.ShowDialog(); 

    } 



    private void timer1_Tick(object sender, EventArgs e) 
    { 
     timer1.Stop(); 
     funEvent(); 
    } 
} 
Verwandte Themen