C# 加载的Midi.Net DLL出现问题
最近我在不同的应用程序中遇到了一些问题。所有这些应用程序都使用Midi控制器将Midi音符发送到照明桌。所有这些应用程序的问题都是一样的 在运行时,当我处理应用程序时,有时会发生整个应用程序冻结的情况。我没有收到任何警告消息,调试器也没有弹出来告诉我出了什么问题。它总是发生在我想演奏midi音符的时候。在这一点上,我唯一能做的就是重新启动整个机器,这一点也不好笑 因为应用程序挂起,我没有得到任何调试信息,所以我确信这与我用来发送Midi注释的DLL有关,并且在那里或在我实现DLL的方式中存在问题 我已经发布了下面的代码,如果有人能告诉我我做错了什么,我将不胜感激 这是初始化Midi的主窗体中的de代码C# 加载的Midi.Net DLL出现问题,c#,midi,midi-interface,C#,Midi,Midi Interface,最近我在不同的应用程序中遇到了一些问题。所有这些应用程序都使用Midi控制器将Midi音符发送到照明桌。所有这些应用程序的问题都是一样的 在运行时,当我处理应用程序时,有时会发生整个应用程序冻结的情况。我没有收到任何警告消息,调试器也没有弹出来告诉我出了什么问题。它总是发生在我想演奏midi音符的时候。在这一点上,我唯一能做的就是重新启动整个机器,这一点也不好笑 因为应用程序挂起,我没有得到任何调试信息,所以我确信这与我用来发送Midi注释的DLL有关,并且在那里或在我实现DLL的方式中存在问题
MidiTools midi;
private void initMidi()
{
midi = new MidiTools();
midi.Enabled = true;
}
initMidi()是从Form_Load函数内部调用的
播放Midi音符的代码是:
midi.playNote(22,0)
下面是MidiTools类文件中的代码
using Midi;
namespace MidiTest
{
class MidiTools
{
public bool Enabled { get; set; }
OutputDevice outputDevice = OutputDevice.InstalledDevices[1];
Channel selectedChannel = Channel.Channel16;
int velocity = 127;
private void playNote(int noteNumber, int delay)
{
// CONVERT THE NOTE
Note selectedNote = (Note)noteNumber;
if (Enabled)
{
Thread.Sleep(delay);
Console.WriteLine(DateTime.Now.ToString("hh:mm:ss NOTE: ") + selectedNote.ToString());
outputDevice.Open();
outputDevice.SendNoteOn(selectedChannel, selectedNote, velocity);
outputDevice.Close();
}
}
}
}
Midi库本身是从以下链接下载的:
过去我尝试过多种方法来解决这个问题。我试着插入一个更大的延迟,我试着在一个列表中提示消息并逐个处理它们,以防止MIDI音符被要求播放,而另一个音符仍在发送,但这些都没有帮助
在98%的情况下,它是有效的,只是偶尔,它冻结在我身上。
我正在使用m-Audio Midisport控制器。()但它也发生在其他控制器上
因此,我们非常感谢您的帮助
致以最良好的祝愿,
Kenneth应用程序或整个机器是否冻结?在后一种情况下,只有司机才能造成这种情况。你在使用M-Audio的驱动程序吗?哪个操作系统?它是应用程序,但我不能中断或关闭它。唯一的办法是关闭电脑。不过我没有使用m-Audio驱动程序。Midi dll确实找到了我的USB-module.Oh并回答了第二个问题。这是Windows7。你不能从任务管理器中终止应用程序吗?不,当我尝试时,它根本没有响应。即使当我试图杀死调试器时,它仍然被阻止。所以唯一的办法就是强制关机。