DoEvents in VB.NET

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hi

I have a Class Library with a class in it. The class has a method that
processes a whole load of stuff. I want to be able to pause this method from
the application using this class.

In VB6 I would have had a DoEvents statement in my method. This would have
allowed the user to select 'Pause' on the user interface, I would have then
set a variable in the class 'paused = True', and I would check the value of
this variable in my method.

However with VB.NET I'm not sure this is the way to go (for a start DoEvents
isn't available from my class library).

Can someone please give me some pointers?

Many thanks

Julia Beresford
 
There is an Application.DoEvents, but for this sort of scenario what you
probably want to do is kick off the long-running process on a separate thread
(don't have an example handy, but it's very easy - one line if I remember
correctly) and then you do not need the DoEvents to allow the user to click
that button - your UI will be responsive to it.
--
David Anton
www.tangiblesoftwaresolutions.com
Instant C#: VB to C# converter
Instant VB: C# to VB converter
Instant C++: C# to C++ converter & VB to C++ converter
Instant J#: VB to J# converter
 
However with VB.NET I'm not sure this is the way to go (for a start DoEvents
isn't available from my class library).

DoEvents is shared method of Application class in VB .NET. So use
Application.DoEvents. I do it exactly as you described.

Just don't forget to add the following at the top of your code:
Imports System.Windows.Forms

and add System.Windows.Forms to your references.
 
Julia Beresford said:
I have a Class Library with a class in it. The class has a method that
processes a whole load of stuff. I want to be able to pause this method
from
the application using this class.

In VB6 I would have had a DoEvents statement in my method. This would
have
allowed the user to select 'Pause' on the user interface, I would have
then
set a variable in the class 'paused = True', and I would check the value
of
this variable in my method.

However with VB.NET I'm not sure this is the way to go (for a start
DoEvents
isn't available from my class library).

Does your application contain a graphical user interface? If it does, you
may want to use 'Application.DoEvents', or multithreading +
'Control.Invoke', or .NET 2.0's BackgroundWorker component. However, I
suggest to decouple algorithms from the user interface and start blocking
operations in their own threads, which is possible using BackgroundWorker or
the 'Thread' class directly.
 
Back
Top