C# 何时执行MIDI输出设备回调?

C# 何时执行MIDI输出设备回调?,c#,.net,midi,C#,.net,Midi,我正在尝试在C#中使用MIDI设备。现在我正在实现通过输出设备发送消息。我看这是有道理的。我在方法中传递适当的回调。问题是,当我通过设备发送消息时,并没有执行回调(发送正常,我看到数据是通过我正在测试API的虚拟MIDI端口传输的)。当消息被发送时,我是否应该进入此回调?当我打开一个设备时,我会进入带有MOM\u open消息的回调,以便正确连接回调 我通过函数发送消息 更新: 对于输出设备,似乎只有在MOM\u DONE的情况下才会执行带有消息的回调。从有关此消息类型的文档中: 当指定的系统独

我正在尝试在C#中使用MIDI设备。现在我正在实现通过输出设备发送消息。我看这是有道理的。我在方法中传递适当的回调。问题是,当我通过设备发送消息时,并没有执行回调(发送正常,我看到数据是通过我正在测试API的虚拟MIDI端口传输的)。当消息被发送时,我是否应该进入此回调?当我打开一个设备时,我会进入带有
MOM\u open
消息的回调,以便正确连接回调

我通过函数发送消息

更新: 对于输出设备,似乎只有在
MOM\u DONE
的情况下才会执行带有消息的回调。从有关此消息类型的文档中:

当指定的系统独占或流缓冲区被播放并返回到应用程序时,MOM_DONE消息被发送到MIDI输出回调函数


因此,对于通过
midioutshortsg
发送的诸如Note On这样的通道消息,似乎不会执行回调。是这样吗?

当使用缓冲区发送大型MIDI消息时,需要使用MOM_DONE回调消息来告诉您的程序何时可以重新使用(或释放)缓冲区。该回调消息仅用于管理缓冲区


对于短消息,不需要此类通知。如果您想在发送短消息后执行某些操作,只需直接调用该代码。

显示代码和您发送的消息。@CL.我已更新了我的问题。似乎这是预期的行为…感谢您的澄清!