ניגון שני קבצי wav בו זמנית
-
כתבתי קוד כזה:
Dim MyThread As Threading.Thread Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click MyThread = New Threading.Thread(AddressOf Play) MyThread.Start() Threading.Thread.Sleep(1000) MyThread = New Threading.Thread(AddressOf Play) MyThread.Start() End Sub Sub Play() Dim SP As New System.Media.SoundPlayer() SP.Stream = File.OpenRead("C:\F.WAV") SP.Play() End Sub
אולם כאשר מתחילה ההשמעה השניה הראשונה נפסקת משום מה, יש לציין שאם אני מריץ את התוכנה כמה פעמים כל תוכנה משמיעה את הקובץ בלא להפסיק את השמעת הקובץ שתוכנה אחרת משמיעה, ואילו בקוד הנ''ל אע''פ שכל השמעה היא ב Thread נפרד הרי שהשמעה אחת מפריעה לשניה.
תודה לכל המסייעים.פורסם במקור בפורום CODE613 ב16/08/2013 14:25 (+03:00)
-
הנה גם זה לא משמיע את שניהם ביחד:
Dim MyThread As Threading.Thread Dim MyThread2 As Threading.Thread Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click MyThread = New Threading.Thread(AddressOf Play) MyThread.Start() Threading.Thread.Sleep(900) MyThread2 = New Threading.Thread(AddressOf Play2) MyThread2.Start() End Sub Sub Play2() Dim SP As New System.Media.SoundPlayer() SP.Stream = File.OpenRead("C:\F.WAV") SP.Play() End Sub Sub Play() Dim SP As New System.Media.SoundPlayer() SP.Stream = File.OpenRead("C:\F.WAV") SP.Play() End Sub
פורסם במקור בפורום CODE613 ב19/08/2013 22:19 (+03:00)
-
בקוד שלך אתה דורס את הטריד הראשון.
תנסה להכניס אותו למשתנה אחר. אולי זה הסיבה לעצירה.זה דורס רק את המצביע. הטרייד הראשון לא מושפע בכלל עד לסיום חייו.
מה ההבדל בין שני Threads באותה תוכנית לבין תוכנית אחת שנפתחה פעמיים? מדוע הSoundPlayer לא נותן כאן וכן נותן כאן?
השאלה מצויינת...
כנראה הוא משותף (Shared) לכל הApplicationDomain בקיצור, פר אפילקציה. אבל אתה לא תיצור נוספת רק להשמע סימולטנית...
לכן עניתי לך מה שעניתי.פורסם במקור בפורום CODE613 ב20/08/2013 11:03 (+03:00)
-
@דוד ל.ט.
כנראה הוא משותף (Shared) לכל הApplicationDomain בקיצור, פר אפילקציה. אבל אתה לא תיצור נוספת רק להשמע סימולטנית...
לכן עניתי לך מה שעניתי.לפי מה שאתה אומר אז הפתרון הוא לעשות טריד לא משותף, לא? וא''כ איך עושים טרידים לא משותפים?
פורסם במקור בפורום CODE613 ב20/08/2013 11:41 (+03:00)
-
@דוד ל.ט.
כנראה הוא משותף (Shared) לכל הApplicationDomain בקיצור, פר אפילקציה. אבל אתה לא תיצור נוספת רק להשמע סימולטנית...לכן עניתי לך מה שעניתי.
לפי מה שאתה אומר אז הפתרון הוא לעשות טריד לא משותף, לא? וא''כ איך עושים טרידים לא משותפים?
מה שאתה אומר כתבתי מפורש שאינו פיתרון לדעתי ("פר אפילקציה. אבל אתה לא תיצור נוספת רק להשמע סימולטנית...").
ומה שכן פיתרון לדעתי גם כבר כתבתי לעיל.פורסם במקור בפורום CODE613 ב20/08/2013 13:33 (+03:00)