事件发生时在 C# 中关闭等待对话框

close waiting dialog in c# when event occured

在等待数据接收的套接字编程中,我用show方法显示了一个对话框(我没有用show dialog方法显示,因为没有发生事件。)

伪代码:

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

recieveCompletedEventHandler()
{
    WaitingForm.Close();
}

没问题,但是用户可以访问表单控件,因为等待表单不是 modal.i 只需要一个示例代码,当我发送字节和接收到的所有数据并且事件发生并且等待表单关闭时.当然,当数据没有完全接收时,等待表单是模态的。

感谢@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();
    }
}