我是用 C# Wpf.
我分析了一个 midi 档案然后把数据分别存在两个 List<> 内,然后用 For Loop 送出.
奇怪的是,第一次播放一切正常,重开后在播放时速度不稳定,而且有点慢,但当在前台 Textbox 按一下,就变回正常,再按一些按钮后,问题又回来。
如果同时开其他 MIDI 软件,就非常正常,怎么操作也无问题,
但我把其他 MIDI 软件关闭,问题又回来。
请各位高手帮忙解决。十分感谢
以下是相关代码:
[DllImport("winmm.dll")]
private extern static int midiOutOpen(out int lphMidiOut, int uDeviceID, int dwCallback, int dwInstance, int dwFlags);[DllImport("winmm.dll")]
public extern static int midiOutShortMsg(int lphMidiOut, int dwMsg);
private void Play_Click(object sender, RoutedEventArgs e)
{
midiOutOpen(out midiOut, 0, 0, 0, 0);
Thread InstanceCaller = new Thread(new ThreadStart(SendMessage));
InstanceCaller.Start();
}
private void SendMessage()
{
for (i = 0; i <= melodyList.Count; i++)
{
midiOutShortMsg(midiOut, melodyList[i]);
Thread.Sleep(durationList[i]);
}
}