2017-02-23 41 views
-1

В программировании сокетов, что мы будем ждать приема данных, я показать диалоговое окно, с шоу-метода (я не показать его с помощью метода диалога шоу, потому что событие не произошло.)близко ждет диалог, в C#, когда произошло событие

Psudo код:

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

recieveCompletedEventHandler() 
{ 
    WaitingForm.Close(); 
} 

это нормально, но пользователь может получить доступ к элементам формы и потому форма ожидания не modal.i просто хочет пример кода, когда я отправить байты и все полученные данные и события происходят и ожидание форма близко. И, конечно, форма ожидания будет модальной, если данные не получат полностью.

+1

Я не понимаю, почему вы не можете запустить длительную работу в фоновом режиме, а также использовать 'ShowDialog '? –

+0

не могли бы вы привести мне пример? – Bobby

+0

нет примера кода? – Bobby

ответ

0

Благодаря @Ofir Winegarten для ответа я создать образец и поместить код здесь для других

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(); 
    } 
} 
Смежные вопросы