Okay I have the folowing code.
VB Code:
  1. Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
  2.         mescounter = mescounter + 1
  3.  
  4.         Me.txtmescount.Text = 60 - mescounter
  5.  
  6.         If mescounter = 60 Then
  7.  
  8.  
  9.             processall() ' process all waiting message and e-mails
  10.             mescounter = 0
  11.  
  12.  
  13.         End If
  14.  
  15.         If doweb Then
  16.  
  17.             If curday <> 1 And curday <> 7 Then
  18.                 If curhour > 7 And curhour < 18 Then
  19.                     webcounter = webcounter + 1
  20.  
  21.                     Me.txtwebcount.Text = 60 - webcounter
  22.                     If webcounter = 60 Then
  23.  
  24.                         processweb() ' exports call data to website
  25.  
  26.                         webcounter = 0
  27.                     End If
  28.                 Else
  29.                     webcounter = webcounter + 1
  30.                     If webcounter = 60 Then
  31.                         webcounter = 0
  32.                     End If
  33.                     Me.txtwebcount.Text = "Paused OOH"
  34.                 End If
  35.             Else
  36.                 webcounter = webcounter + 1
  37.                 If webcounter = 60 Then
  38.                     webcounter = 0
  39.                 End If
  40.                 Me.txtwebcount.Text = "Paused W/E"
  41.             End If
  42.  
  43.  
  44.         End If
  45.  
  46.     End Sub
  47.  
  48.     Private Sub processweb()
  49.         If processingweb = False Then
  50.             processingweb = True
  51.  
  52.             Me.Pbweb.Value = 10
  53.             Me.txtwebcall.Text = CStr(CLng(Me.txtwebcall.Text) + upwebsite.getupcalldata())
  54.             Me.Pbweb.Value = 20
  55.             Me.txtwebcomp.Text = CStr(CLng(Me.txtwebcomp.Text) + upwebsite.getupcompdata())
  56.             Me.Pbweb.Value = 50
  57.             Me.txtwebemp.Text = CStr(CLng(Me.txtwebemp.Text) + upwebsite.getupempdata())
  58.             Me.Pbweb.Value = 70
  59.             Me.txtwebcon.Text = CStr(CLng(Me.txtwebcon.Text) + upwebsite.getupcondata())
  60.  
  61.             Me.Pbweb.Value = 90
  62.             Me.txtremwebemp.Text = CStr(CLng(Me.txtremwebemp.Text) + upwebsite.getwebchanges())
  63.  
  64.             Me.Pbweb.Value = 100
  65.             Me.Pbweb.Value = 0
  66.  
  67.             processingweb = False
  68.         End If
  69.      
  70.  
  71.     End Sub

Now my problem is that the processweb() sub can sometimes freeze for minutes on end if our Internet conection is down or running very slowly, currently when this happens the other sub processall() doesn't get run. I'm assuming the whole application is locking up until the processweb() task completes.
To solve this problem would you use threads? and how easy would it be to convert the above to threading, basically I know nothing about threading or even if this is what I need, so perhaps some general pointers would be useful.