Since you are using an UI-application, have a look at the Ping
-class as well as the async method for pinging, depending on your normal ping times and how heavy the network traffic is I would change the ping time, but at least once a second is needed.
In the form use a timer which calls some method, ex async void UpdateMachineStatus(IPAdress adr)
which awaits the call to the pinger, ie var result = await Ping.SendPingAsync(adr)
, and then does something. This would use a non-blocking wait and would not cream system resources.
Harness the power of async!