Home All Groups Group Topic Archive Search About
Author
22 Mar 2006 3:48 PM
Julia Beresford
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

Author
22 Mar 2006 4:00 PM
David Anton
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



Show quoteHide quote
"Julia Beresford" wrote:

> 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
Author
22 Mar 2006 4:08 PM
Peter Macej
> 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.

--
Peter Macej
Helixoft - http://www.vbdocman.com
VBdocman - Automatic generator of technical documentation for VB, VB
..NET and ASP .NET code
Author
22 Mar 2006 5:53 PM
Cor Ligthert [MVP]
Julia,

As David menioned is for this in VB 2005 the backgroundworker class. Which
is made to make threading easier.

http://msdn2.microsoft.com/en-us/library/8xs8549b.aspx

I hope this helps,

Cor

Show quoteHide quote
"Julia Beresford" <JuliaBeresf***@discussions.microsoft.com> schreef in
bericht news:42062E0B-B282-4899-8197-7C5DC62BE2D0@microsoft.com...
> 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
Author
22 Mar 2006 6:15 PM
Herfried K. Wagner [MVP]
Show quote Hide quote
"Julia Beresford" <JuliaBeresf***@discussions.microsoft.com> schrieb:
> 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.

--
M S   Herfried K. Wagner
M V P  <URL:http://dotnet.mvps.org/>
V B   <URL:http://classicvb.org/petition/>
Author
23 Mar 2006 9:50 AM
Carlos J. Quintero [VB MVP]
Hi Julia,

There is a System.Windows.Forms.Application.DoEvents, but you may want to
consider threading. Here you have some resources about asynchronous
operations for .NET 1.x (there is a new BackgroundWorker class in .NET 2.0):

http://www.mztools.com/resources_net_developers.htm#AsynchronousOperations

--

Best regards,

Carlos J. Quintero

MZ-Tools: Productivity add-ins for Visual Studio
You can code, design and document much faster:
http://www.mztools.com


Show quoteHide quote
"Julia Beresford" <JuliaBeresf***@discussions.microsoft.com> escribió en el
mensaje news:42062E0B-B282-4899-8197-7C5DC62BE2D0@microsoft.com...
> 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