using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
delegate void UpdateLableText(string text); //关于怎样将委托 改为 事件
static event UpdateLableText UpdateEvent;
public Form1()
{
UpdateEvent += UpdateLable; // event += delegate
Thread thread = new Thread(this.PingJob);
thread.IsBackground = true;
thread.Start();
InitializeComponent();
}
void UpdateLable(string text)
{
if (label2.InvokeRequired)
{
label2.Invoke(
// new MethodInvoker(delegate { label2.Text = text; }) //这样写就不用写下面的else分支
new UpdateLableText( UpdateLable), new object[] { text } ); //如果这样写,需要写else分支
}
else
{ // If we're running on the UI thread, we'll get here, and can safely update the label's text.
label2.Text = text;
}
}
Ping ping = new Ping();
public void PingJob()
{
while (true)
{
Thread.Sleep(1000);
PingReply pingReply = ping.Send("127.0.0.1", 3);
if(pingReply.Status== IPStatus.Success)
{
// UpdateLable("网络畅通"); //调用委托
UpdateEvent("网络畅通"); //调用事件 ,差不多,只不过事件要static 且 +=委托
Console.WriteLine("网络畅通");
}
else
{
//UpdateLable("网络连接异常"); //调用委托
UpdateEvent("网络连接异常");//调用事件 ,差不多,只不过事件要static 且 +=委托
Console.WriteLine("网络连接异常");
}
}
}
}
}
C # 委托delegate 改 事件event
最新推荐文章于 2024-08-14 12:02:23 发布