在UWP中使用MIDI

问题描述 投票:0回答:1

将UWP MIDI API与物理MIDI设备一起使用时,应用程序会在退出时挂起,并且不能从命令行或任务管理器强制终止。

所有使用MIDI的UWP应用程序都会发生这种情况,包括official example from MSDN,无需修改。

我已经提出了一个关于这个的issue on GitHub,但它似乎不是一个新问题。自2014年以来,MIDI一直被打破。

有没有办法通过其他方式绕过UWP中的这个问题?我正在用C#编写,但我精通C ++并且可以使用低级API,如果它们存在的话。我只需要从选定的MIDI设备(键盘)获取MIDI输入。

我也尝试使用相关帖子(winmm.dll)中建议的Getting signals from a MIDI port in C#,但这对我不起作用。当从UWP应用程序使用时,midiInGetNumDevs()方法返回0。

我正在使用M-Audio Fast Track USB声卡(通过USB连接)和M-Audio 88es Keystation MIDI Keyboard(通过USB连接)。我在桌面应用程序中没有遇到任何问题。

我发现了一个部分解决方法,我将释放代码移动到App Suspending事件处理程序,而不是在析构函数中。但是,在应用程序的生命周期内拔出设备时仍会出现问题。如果在应用程序运行时插入了MIDI设备,应用程序将关闭而不会出现问题(使用解决方法)。如果在应用程序运行之前插入MIDI设备并在应用程序运行时保持插入状态,则应用程序将关闭而不会出现问题(使用解决方法)。只有在应用程序运行时设备被拔出,app才会挂起,无论解析代码是在析构函数中还是在App Suspending处理程序中完成。

c# uwp midi hang uwp-midi
1个回答
0
投票

我无法重现这个问题。我相信它可能与声卡的驱动程序有关。

使用你提到的样本,https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/MIDI•应用程序在我关闭它时没有挂起。 •我能够在应用程序生命周期中删除电缆,没有问题。重新连接后,我仍然可以发送和接收消息。 •我能够在没有问题的情况下插入设备中期生命周期。我仍然能够发送和接收消息。

虽然它目前在桌面上工作,但它需要“通用”才能在UWP中正常运行。音频卡驱动程序是通用的吗?

在我们开发的驱动程序文档中,我们看到使用InfVerif工具验证驱动程序包的INF文件是否通用的注释。 https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/infverif。在app developer文档中,我看到了一个用于测试设备元数据的注释。 https://docs.microsoft.com/en-us/windows-hardware/drivers/devapps/step-4--test-device-metadata

与您的问题相关的其他文档:构建UWP设备应用程序 https://docs.microsoft.com/en-us/windows-hardware/drivers/devapps/the-workflow

测试UWP设备应用的设备元数据 https://docs.microsoft.com/en-us/windows-hardware/drivers/devapps/step-4--test-device-metadata

通用Windows驱动程序入门 https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/getting-started-with-universal-drivers

MIDI样本https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/MIDI

在app暂停中释放资源 https://docs.microsoft.com/en-us/windows/uwp/launch-resume/suspend-an-app#release-resources

使用Dispose来禁止最终化注意:取决于终结器,将使内存中的资源长于必要的时间。在执行完整GC或进程退出之前,它们不会被释放。 https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/implementing-dispose

© www.soinside.com 2019 - 2024. All rights reserved.