473,387 Members | 1,844 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

How to do Multi-Threading

Hi,
I need to use Windows Meadia Player control in my application to run som
mpeg movies. There is no user interface, I need to control everything
programatically. I do not want to use the playlist facility of the Windows
Media Player Control, I want to queue up the files to play myself. In order
to do that I need to know when the current file has been played and the
player has stopped.
I am looking at multi-threading as a solution, but am having difficultly
with the algorithm. I get the main thread to start the first clip and get
the worker function to check when the player has stopped the first clip, but
then I am wondering where I put the code to load the next mpeg file and
start the worker function again. Below is some snipits of code. Any help
would be appreciated.
Michael Murphy
md******@scs-techresources.com
954-452-1047

Imports System.Threading

Public Class frmMain

Inherits System.Windows.Forms.Form

Dim startworker As ThreadStart

Dim workerThread As Thread

Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

startworker = New ThreadStart(AddressOf workerfunction)

workerThread = New Thread(startworker)

'DoCreate()

workerThread.Start()

End Sub

Public Sub DoCreate()

AxWindowsMediaPlayer1.uiMode = "none" ' no user interface, just the
player

If AxWindowsMediaPlayer1.URL = "" Then

AxWindowsMediaPlayer1.URL = GetNextAdvertisementFileName("Started")
' first time through

Else

AxWindowsMediaPlayer1.URL =
GetNextAdvertisementFileName(AxWindowsMediaPlayer1 .URL) ' pass function the
last one played

End If

If workerThread.ThreadState = ThreadState.Stopped Then

workerThread.Start()

End If

End Sub

Private Sub workerfunction()

While (1)

If AxWindowsMediaPlayer1.playState <> WMPLib.WMPPlayState.wmppsStopped And
AxWindowsMediaPlayer1.playState <> WMPLib.WMPPlayState.wmppsUndefined Then

Thread.Sleep(700)

Else

Exit While

End If

End While

DoCreate()

End Sub

Private Function GetNextAdvertisementFileName(ByVal LastFileName As String)
As String

'stub out with these two mpeg files alternating for now

If LastFileName = "C:\Documents and Settings\MDMurphy\My Documents\Visual
Studio Projects\GasStationAdvert\ranier.mpg" Then

GetNextAdvertisementFileName = "C:\Documents and Settings\MDMurphy\My
Documents\Visual Studio Projects\GasStationAdvert\experience.mpg"

Else

GetNextAdvertisementFileName = "C:\Documents and Settings\MDMurphy\My
Documents\Visual Studio Projects\GasStationAdvert\ranier.mpg"

End If

End Function

End Class

Nov 21 '05 #1
4 3737
Hi Michael,

I think you may try to use the code to see if that is what you want.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Me.AxWindowsMediaPlayer1.URL = "c:\a.wma"
Me.AxWindowsMediaPlayer1.Ctlcontrols.play()
End Sub
'handle the PlayStateChange event to be notified when the song has been
stopped
Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As
Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles
AxWindowsMediaPlayer1.PlayStateChange
If e.newState = Me.AxWindowsMediaPlayer1.playState.wmppsStopped
Then
BeginInvoke(New MethodInvoker(AddressOf PlayIm))
End If
End Sub
Private Sub PlayIm()
Me.AxWindowsMediaPlayer1.URL = "c:\b.wma"
Me.AxWindowsMediaPlayer1.Ctlcontrols.play()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
MsgBox(Me.AxWindowsMediaPlayer1.URL)
End Sub

Best regards,

Peter Huang
Microsoft Online Partner Support

Get Secure! - www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no rights.

Nov 21 '05 #2
Peter,

I had the plan to do this, so thanks that you did it, I am as well curious
if this fit the problem.

Cor

""Peter Huang"" <v-******@online.microsoft.com>
Hi Michael,

I think you may try to use the code to see if that is what you want.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Me.AxWindowsMediaPlayer1.URL = "c:\a.wma"
Me.AxWindowsMediaPlayer1.Ctlcontrols.play()
End Sub
'handle the PlayStateChange event to be notified when the song has been
stopped
Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As
Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles
AxWindowsMediaPlayer1.PlayStateChange
If e.newState = Me.AxWindowsMediaPlayer1.playState.wmppsStopped
Then
BeginInvoke(New MethodInvoker(AddressOf PlayIm))
End If
End Sub
Private Sub PlayIm()
Me.AxWindowsMediaPlayer1.URL = "c:\b.wma"
Me.AxWindowsMediaPlayer1.Ctlcontrols.play()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
MsgBox(Me.AxWindowsMediaPlayer1.URL)
End Sub

Best regards,

Peter Huang
Microsoft Online Partner Support

Nov 21 '05 #3
Peter,
Thanks for the help. I cut and pasted what I needed and with a few tweaks
here and there, it works great!
And Cor, thank you, too for following along on this.
We sure have a nice communitiy here, now don't we??
Michael

""Peter Huang"" <v-******@online.microsoft.com> wrote in message
news:tu*************@cpmsftngxa06.phx.gbl...
Hi Michael,

I think you may try to use the code to see if that is what you want.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Me.AxWindowsMediaPlayer1.URL = "c:\a.wma"
Me.AxWindowsMediaPlayer1.Ctlcontrols.play()
End Sub
'handle the PlayStateChange event to be notified when the song has been
stopped
Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As
Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles
AxWindowsMediaPlayer1.PlayStateChange
If e.newState = Me.AxWindowsMediaPlayer1.playState.wmppsStopped
Then
BeginInvoke(New MethodInvoker(AddressOf PlayIm))
End If
End Sub
Private Sub PlayIm()
Me.AxWindowsMediaPlayer1.URL = "c:\b.wma"
Me.AxWindowsMediaPlayer1.Ctlcontrols.play()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
MsgBox(Me.AxWindowsMediaPlayer1.URL)
End Sub

Best regards,

Peter Huang
Microsoft Online Partner Support

Get Secure! - www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no
rights.

Nov 21 '05 #4
Hi Michael,

I am glad the suggestion help you.
Cheers!

Best regards,

Peter Huang
Microsoft Online Partner Support

Get Secure! - www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no rights.

Nov 21 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: Frank Jona | last post by:
Intellisense with C# and a multi-file assembly is not working. With VB.NET it is working. Is there a fix availible? We're using VisualStudio 2003 Regards Frank
12
by: * ProteanThread * | last post by:
but depends upon the clique: ...
0
by: frankenberry | last post by:
I have multi-page tiff files. I need to extract individual frames from the multi-page tiffs and save them as single-page tiffs. 95% of the time I receive multi-page tiffs containing 1 or more black...
6
by: cody | last post by:
What are multi file assemblies good for? What are the advantages of using multiple assemblies (A.DLL+B.DLL) vs. a single multi file assembly (A.DLL+A.NETMODULE)?
6
by: Joe | last post by:
I have 2 multi-list boxes, 1 displays course categories based on a table called CATEGORIES. This table has 2 fields CATEGORY_ID, CATEGORY_NAME The other multi-list box displays courses based on...
4
by: mimmo | last post by:
Hi! I should convert the accented letters of a string in the correspondent letters not accented. But when I compile with -Wall it give me: warning: multi-character character constant Do the...
5
by: Shane Story | last post by:
I can seem to get the dimensions of a frame in a multiframe tiff. After selecting activeframe, the Width/Height is still really much larger than the page's actual dimensions. When I split a...
5
by: bobwansink | last post by:
Hi, I'm relatively new to programming and I would like to create a C++ multi user program. It's for a project for school. This means I will have to write a paper about the theory too. Does anyone...
0
by: Sabri.Pllana | last post by:
We apologize if you receive multiple copies of this call for papers. *********************************************************************** 2008 International Workshop on Multi-Core Computing...
1
by: mknoll217 | last post by:
I am recieving this error from my code: The multi-part identifier "PAR.UniqueID" could not be bound. The multi-part identifier "Salary.UniqueID" could not be bound. The multi-part identifier...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.