Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
mciSendStringで音が鳴らない???
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30560#CommentId84264
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
あせたけ
 (社会人)
投稿日時
2020/10/25 21:04:35
魔界の仮面弁士さん、るきおさんにヒントを頂き、
るきおさんの
> UIスレッドでしか実行できない処理なのではないか
が決めてとなり、Form1に1度処理を戻し、デリゲート処理する事で音が鳴りました。
※変更後
----------------------------------------------------------------------------------
Public Class Form1
private sub Form1_Load(ByVal sender As Object, ByVal e As eventAugs) Handles Mybase.Load
Dim m As New Main(Me)
End Sub
Public Sub soundPlay(ByVal snd As Sound.snd)
Sound.SoundCheck(Me, snd)
End Sub
End Class
End Class
Public Class Main
Public Property f As Form1
Private WithEvents lcs As New LanConverter.LanConverters()
Private WithEvents Sensers As New SenserS()
Private Settings As New Settings()
Private Olc As New List(Of String)
Private Sub New(ByVal f as form)
Me.f = f
End Sub
Private Sub OutputEventsCatch(ByVal sender As Object, ByVal e As LanConverter.LCEventArgs) Handles Sensers.AleartEvent
Select Case e.InputStatus
Case SenserInterface.SenserInputStatus.通常
f.soundPlay(Sound.snd.None)
Case SenserInterface.SenserInputStatus.発報
f.soundPlay(Sound.snd.Warning)
(・・・省略・・・)
End Select
End Sub
Public Class Sound
Delegate Sub SoundDelegate(ByVal f As Form1, ByVal s As snd)
Public Sub SoundCheck(ByVal f As Form1, ByVal s As snd)
If f.InvokeRequired Then
f.Invoke(New SoundDelegate(AddressOf SoundCheck), f, s)
Return
End If
Sound(s)
End Sub
(Soundメソッドは前出)
End Class
----------------------------------------------------------------------------------
何かあまり納得は行っていませんが、とりあえず音は鳴りましたので、ヨシとします…^^;
私感
大きなマルチスレッドプログラムは初めて組みますが、マルチスレッドプログラミングは難しい…^^;
メインスレッド? ワーカースレッド? フォアグラウンドスレッド? バックグラウンドスレッド?
もっと精進せねば…
ありがとうございました。