Solved

Pause execution of code like msgbox

Posted on 2008-06-20
7
329 Views
Last Modified: 2013-11-06
Hi
I would like to pause execution of a script while waiting for another thread to complete. I can't use threading.thread.sleep(xxx) because it sows the script down. What I'm looking for is something that pauses the script the same way a messagebox does:


While Encoder.RunState <> WMENC_ENCODER_STATE.WMENC_ENCODER_STOPPED
            Me.ToolStripStatusLabel1.Text = "...Waiting for response"
            MsgBox("test")
  End While

Open in new window

0
Comment
Question by:koldstar
  • 4
  • 3
7 Comments
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 21834135
you have to test for the other thread's .IsAlive property
0
 

Author Comment

by:koldstar
ID: 21834169
can you explain how to?

I'm not making the tread my self, but it's Microsofts wmencoder that is creating a new thread every time you call the start function.

The above code is in my main thread.
0
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 21834207
Well, that depends if you have a way to obtain this thread's reference, some code snippet will be helpful
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 

Author Comment

by:koldstar
ID: 21834278
Try something like this:

The sub, encodeAll loops throug a collection of songs. If I don't pause the encoding it starts a new thread for every song witch causes an out of memory exception
Dim WithEvents Encoder As WMEncoder
 
private sub EncodeSong(byval songname as string)
 
 	Encoder = New WMEncoder
 
	'do some stuff with the encoder
	'code removed
	'code removed
 
	Encoder.AutoStop = True
	Encoder.RemoteAdmin = True
     
	Encoder.PrepareToEncode(True)
 
	'start encoding (start a new thread)          
	Encoder.Start()
           
	'pause until process is done
	While Encoder.RunState <> WMENC_ENCODER_STATE.WMENC_ENCODER_STOPPED
      		Me.ToolStripStatusLabel1.Text = "...Venter på svar!"
      		MsgBox("test")
	End While
end sub
 
private sub encodeAll()
 
	for each song in song
		EncodeSong(song.path)
	next
 
 
end sub

Open in new window

0
 

Author Comment

by:koldstar
ID: 21834287

private sub encodeAll() 
	for each song in songs
		EncodeSong(song.path)
	next
 end sub

Open in new window

0
 
LVL 55

Accepted Solution

by:
Jaime Olivares earned 125 total points
ID: 21834454
I don't know exactly what you need, do you want to show a messagebox while playing? and hide it after play? You can do something like this:

' Assuming you desing a WaitForm with a message
Dim form as WaitForm = new WaitForm
form.Show()
Me.ToolStripStatusLabel1.Text = "...Venter på svar!"
While Encoder.RunState <> WMENC_ENCODER_STATE.WMENC_ENCODER_STOPPED
                  Application.DoEvents()  'avoid the application to freeze
End While
form.Hide()
0
 

Author Comment

by:koldstar
ID: 21834609
No I was trying to get rid of the messagebox. I just wanted something to stop the code, but the Application.DoEvents()  seems to do just fine. thanks :_)
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
Jaspersoft Studio is a plugin for Eclipse that lets you create reports from a datasource.  In this article, we'll go over creating a report from a default template and setting up a datasource that connects to your database.
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question