投稿者 あせたけ  (社会人) 投稿日時 2020/10/24 12:19:59
ご意見ありがとうございます。

現在こちらでチェックしている項目としては、
https://www.codeproject.com/Questions/183548/How-to-use-mciSendString-in-a-threaded-application%20%E7%AE%A1%E7%90%86
のmciTestクラスを作成、mciTestクラスのバグ修正、
mciReplacement(ByVal Command As String) に上の『音声処理鳴動』のcmd変数の結果を投げてみましたが、音が鳴りませんでした。

説明がなかなかややこしいのですが、とりあえず概要を…

Public Class Class1
  Privete LCS as new List(Of Class2)

    Public Event LCEvents(sender As Object, e As LCEventArgs)

    Public Sub LCEvent(sender As Object, e As LCEventAugs)
        _RaiseEvent LCEvents(sender, e)
    End sub
End Class


Public Class2
    Private objLCS As Class1

    Private Polling_Thread As New System.Threading.Thread(AddressOf Polling_Exec)

    Public Sub New(ByVal objLCS As Class1)
    Me.ObjLCS = objLCS
        Try
            If Not Connection Then
                Task.Run(Sub()
                             Open()
                         End Sub)
            End If
            Polling_Thread.Name = "Lan Converter " & LCIndex
            Polling_Thread.Start()
        Catch e As Exception

        End Try
    End Sub

    Public Overridable Sub Open() Implements LCInterface.Open
        Connection = sckOpen()
        Send("W", 0)
    End Sub

    Private Function sckOpen() As Boolean Implements LCInterface.sckOpen
        Try
            If Me.Enabled Then
                Me.objSck.Connect(Me.IP, Me.PORT)
                Me.objStm = objSck.GetStream()
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            objLCS.LCEvent(Me, New LCEventArgs(Connect:=False, ErrNo:=LCEventArgs.ErrNoState.未接続, ErrDiscription:="接続できませんでした"))
            Return False
        End Try
    End Function

    Private Sub Polling_Exec() Implements LCInterface.Polling_Exec
        Do
            Send()
            Recieve()
            System.Threading.Thread.Sleep(Polling_Interval)
        Loop
    End Sub
   
    Private Sub Send()
        (状態を取得するコマンド送信)
  End Sub

  Private Sub Recieve()
   (状態を受信する)
   If (状態変化があった時) then
     ObjLCS.LCEvent(Me,New LCEventAugs (InputData:= InputData))
   End If
    End Sub
End Class

概要としてはこの様な感じでしょうか…