2

我必须NSSlider通过硬件midi控制器移动一些,我已经编写了一个midi学习程序来将硬件光标分配给NSSlider(子类),然后就可以了。在内部MIDIReadProc,我处理NSSlider取决于传入控制和值的移动,但是现在当我移动硬件光标时,滑块可以移动一个时间,就像移动光标停止其他光标一样。

我的问题是,处理光标同时移动的最佳策略是什么?1. 我应该用一个单独的线程处理吗?2. 我应该有一个FIFO数据结构MIDIPacket并处理它MIDIReadProc(带有一些并发分离的过程)吗?

我很抱歉我的英语。感谢关注。

一个。

4

2 回答 2

2

您不应该在MIDIReadProc回调中进行任何 UI 同步。

这个回调是从一个高优先级的实时线程调用的,所以你必须避免做任何可能“太长”的事情。

正如您所说,您可以使用 FIFO 并在另一个线程(例如主线程)中处理它。

于 2012-10-29T12:50:37.810 回答
0

我找到了一个解决方案,更新“NSSlider”,移动滑块更新 kvo 路径中的代码,并使用后台进程分离线程来更新滑块 ui 和值。之后,我将带有分配的 ui 控件与没有分配的 ui 控件分开,并使用在 MIDI 控件中键值相等的“NSMutableDictionary”来在 MIDIReadProc 中更快地识别“NSSlider”。

感谢您的关注。

于 2012-12-04T09:28:34.563 回答