C#中timer的使用?

尘封 尘封 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
问题说明,我需要定时的做一个UDP广播,假设为一秒。现在我使用了System.Threading.Thread.Timer来帮组我打到这个效果,具体代码如下:
public CheckOnline()
{
InitializeComponent();
TimerCallback delegate_CheckOnline = new TimerCallback(CheckOnline.CheckOnlineStatus);
System.Threading.Timer timer = new System.Threading.Timer(delegate_CheckOnline, null, 0, 1000);
// Thread.Sleep(Timeout.Infinite);
}
public static void CheckOnlineStatus(object s)
{
// 发送广播信号,通报自己存在;
IPEndPoint lan = new IPEndPoint(IPAddress.Parse("192.168.2.255"), 9000);
// IPEndPoint localEP_Send=new IPEndPoint(IPAddress.Parse("192.168.2.250"),0);
UdpClient Client = new UdpClient();
byte[] hello = Encoding.ASCII.GetBytes("hello");
Client.Send(hello, hello.Length,lan);
}

CheckOnline()是我主窗体的构造函数。我遇到的问题是当运行该程序时窗体可以正常显示,当时Timer只会执行两次就不再执行,即我只检测到它发了两次UDP广播包。而我将主线程永久睡眠时可以让timer正常执行,即每个一秒发送一个UDP广播报。我的需求就是既要让主窗体正常显示又要让timer正常执行。请问有没有什么好方法达到我的目的?最好不要用互斥或信号量等。
...全文
评论 3
收藏 已收藏
分享
返回顶部
尘封
C# 111,129 成员 642,538 内容