Windows应用程序。代码运行时填写更多数据

时间:2016-01-22 13:08:27

标签: c# .net windows-applications

我想在代码运行时用更多数据填充列表,但窗口没有响应。它适用于MVC应用程序。

private void button1_Click(object sender, EventArgs e)
        {
            List<string> list = new List<string>();
            list.Add(textBox1.Text);

            bool pingable = false;
            Ping pinger = new Ping();
            try
            {
                PingReply reply = pinger.Send(textBox1.Text);
                pingable = reply.Status == IPStatus.Success;
            }
            catch (PingException)
            {
                // Discard PingExceptions and return false;
            }
            while (pingable == false)
            {   
                try
                {
                    PingReply reply = pinger.Send(textBox1.Text);
                    pingable = reply.Status == IPStatus.Success;
                }
                catch (PingException)
                {
                    // Discard PingExceptions and return false;
                }

                Thread.Sleep(1000 * 60 * 30);
            }    
            {
                try
                {
                    var mailMsg = new MailMessage();
                    // To
                    mailMsg.To.Add(new MailAddress(textBox2.Text));                    
                    // From
 ect ect

我想在App运行时用新的PC名称填写List。然后我将添加一个for循环来为每台PC执行ping操作,并在发送到联机PC的电子邮件后暂停。 我究竟做错了什么? 或者,当活动正在运行时,您无法与应用互动?

1 个答案:

答案 0 :(得分:1)

当它正在运行时,您无法与其进行交互,因为控件将无法返回到UI,直到该功能完成为止。

您需要查看任务和/或异步和等待。 Async的{​​{3}}和c#中的Await。和This is the documentation有关于Tasks和Async / Await的信息记录。