C# 加载的Midi.Net DLL出现问题

C# 加载的Midi.Net DLL出现问题,c#,midi,midi-interface,C#,Midi,Midi Interface,最近我在不同的应用程序中遇到了一些问题。所有这些应用程序都使用Midi控制器将Midi音符发送到照明桌。所有这些应用程序的问题都是一样的 在运行时,当我处理应用程序时,有时会发生整个应用程序冻结的情况。我没有收到任何警告消息,调试器也没有弹出来告诉我出了什么问题。它总是发生在我想演奏midi音符的时候。在这一点上,我唯一能做的就是重新启动整个机器,这一点也不好笑 因为应用程序挂起,我没有得到任何调试信息,所以我确信这与我用来发送Midi注释的DLL有关,并且在那里或在我实现DLL的方式中存在问题

最近我在不同的应用程序中遇到了一些问题。所有这些应用程序都使用Midi控制器将Midi音符发送到照明桌。所有这些应用程序的问题都是一样的

在运行时,当我处理应用程序时,有时会发生整个应用程序冻结的情况。我没有收到任何警告消息,调试器也没有弹出来告诉我出了什么问题。它总是发生在我想演奏midi音符的时候。在这一点上,我唯一能做的就是重新启动整个机器,这一点也不好笑

因为应用程序挂起,我没有得到任何调试信息,所以我确信这与我用来发送Midi注释的DLL有关,并且在那里或在我实现DLL的方式中存在问题

我已经发布了下面的代码,如果有人能告诉我我做错了什么,我将不胜感激

这是初始化Midi的主窗体中的de代码

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。你不能从任务管理器中终止应用程序吗?不,当我尝试时,它根本没有响应。即使当我试图杀死调试器时,它仍然被阻止。所以唯一的办法就是强制关机。