If you just want to do the occasional ping then that should suffice. If you want to use it to repeatedly monitor another address while you do other things then you should use a BackgroundWorker. This could run in another thread and update a status variable available to the main thread. It's not that hard to do and if you want to go that route I can show you how.
Try the following (I zipped and attached the project folder). Feel free to ask any follow-up questions. Start the program. The starting address is www.google.com but feel free to replace this with another name or IP address. You can modify the address while the thread is running. Try various IP addresses to see the status change.
Public Class Form1
'Background threads cannot write to controls in other threads. In order to update
'the status label you have to access it through a delegate. You'll see how this
'works in the UpdateStatus Sub.
Private Delegate Sub UpdateStatusDelegate(text As String)
Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
'If the background thread is active, kill it. We already have the code in
'the button click handler so let's just use that.
If btnStart.Text = "Stop" Then
Private Sub btnStart_Click(sender As System.Object, e As System.EventArgs) Handles btnStart.Click
'We'll start and stop the background worker using one button. We'll toggle
'the button text as we change states between running to stopped.
Dim btn As Button = sender
If btn.Text = "Start" Then 'start the background thread
btn.Text = "Stop"
btn.Text = "Start"
bgwPing.CancelAsync() 'tell the background thread to stop itself
Private Sub UpdateStatus(text As String)
'The InvokeRequired method returns True if the thread that calls it
'is running from a different thread. In that case we create a delegate
'to do the update of the control's text otherwise we can update the
If lblStatus.InvokeRequired Then
Dim dlg As New UpdateStatusDelegate(AddressOf UpdateStatus)
lblStatus.Text = TimeOfDay & " " & text
Private Sub bgwPing_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles bgwPing.DoWork
'If the foreground thread requested a cancellation then set the
'appropriate flag and exit the loop.
If bgwPing.CancellationPending Then
e.Cancel = True
'do the ping and update the status label
If My.Computer.Network.Ping(txtAddress.Text) Then
'suspend for five seconds before the next ping