我是一名项目工程师,我正在研究多路复用器系统,现在我正在使用visual basic 2010编写软件来控制系统,因为公司不会花钱给专业软件开发人员。主程序工作得很好,但我对那些经验丰富的人有一个快速的问题。我的系统中有10个以太网设备(上部和海底),我需要监控连接状态。
我正在进行此操作的方法是在循环中反复ping每个IP地址,如果连接/断开连接,我会从imagelist控件更改pitcurebox以显示连接状态。这是在一个新的线程中完成的,以阻止主界面无响应,一切正常,但当然更新缓慢,所以...
我向你们提问是否有更好的方法在系统上显示连接/断开的IP地址?我在网上搜索过,但我发现的一切都不是我想要的,或者我只是在搜索。
感谢您的时间。
答案 0 :(得分:0)
由于您使用的是UI应用程序,请查看Ping
- 类以及async method for pinging,具体取决于您的正常ping时间以及网络流量有多大我会改变ping时间,但至少需要一次。
在表单中使用一个调用某个方法的计时器,ex async void UpdateMachineStatus(IPAdress adr)
等待对pinger的调用,即var result = await Ping.SendPingAsync(adr)
,然后执行某些操作。这将使用非阻塞等待并且不会破坏系统资源。
利用异步的力量!