Only had a brief look but one comment I would make is that your "Active" method which just returns a boolean that shows whether or not the process is currently active should really be a property A method (ie a sub or a function) should be used when some work is actually going to be done, if you are just going to check a boolean value and return the current value then that is an ideal place to use a property.
E.g
vb.net Code:
  1. Public ReadOnly Property Active() As Boolean
  2.         Get
  3.             Return Running
  4.         End Get
  5. End Function