C# 解决Windows服务中所需的调用问题

C# 解决Windows服务中所需的调用问题,c#,vb.net,windows-services,invoke,C#,Vb.net,Windows Services,Invoke,我正在尝试制作一个简单的windows服务 当另一个设备的卷被更改时,此服务所做的只是更改一个设备的卷。它目前作为一个应用程序工作,只有两个SUB和一个dll可以运行 基本上是在表单加载上创建事件处理程序: AddHandler device.AudioEndpointVolume.OnVolumeNotification, AddressOf volume 该小组称之为: Private Sub volume(data As CoreAudioApi.AudioVolumeNotificat

我正在尝试制作一个简单的windows服务

当另一个设备的卷被更改时,此服务所做的只是更改一个设备的卷。它目前作为一个应用程序工作,只有两个SUB和一个dll可以运行

基本上是在表单加载上创建事件处理程序:

AddHandler device.AudioEndpointVolume.OnVolumeNotification, AddressOf volume
该小组称之为:

Private Sub volume(data As CoreAudioApi.AudioVolumeNotificationData)
    If Me.InvokeRequired Then
        Me.Invoke(New AudioEndpointVolumeNotificationDelegate(AddressOf volume), data)
    Else
        loopback.AudioEndpointVolume.MasterVolumeLevelScalar = data.MasterVolume
        loopback.AudioEndpointVolume.Mute = data.Muted
    End If

End Sub
现在在windows服务中,我不能使用invoke,当我删除它时,会抛出错误
,函数求值需要所有线程运行


我认为正在发生的是,控制数据和环回(即通过CoreAudioApi.dll访问的音频设备的控制)在没有调用的情况下无法解析,但我不知道如何使它们正确解析。

如果我删除invoke语句周围的If,使其仅具有以下行:

Me.Invoke(New AudioEndpointVolumeNotificationDelegate(AddressOf volume), data)
后面紧跟着另外两行,它抛出错误:

“'Invoke'不是'VolumeSet.VolumeSet'的成员”

所以我认为调用根本不能在windows服务中使用


但是谢谢你的主意

你有没有试过不使用“如果我需要…”这个词,只留下其他部分?。Windows服务不允许与桌面交互,并且无法从服务中显示Windows窗体,可能不需要调用。与论坛网站不同,我们不使用“感谢”或“感谢任何帮助”或签名。这不是答案!