我必须通过硬件midi控制器移动一些NSSlider
,我编写了一个midi学习程序,将硬件光标分配给NSSlider
(子类),然后就可以了。在MIDIReadProc
内,我处理移动NSSlider
取决于传入的控件和值,但现在当我移动硬件光标时,滑块可以移动一次,就像移动光标停止其他。
我的问题是,处理光标同时移动的最佳策略是什么?
1。我应该用分开的线程来处理吗?
2。我是否应该有一个FIFO
数据结构MIDIPacket
并处理MIDIReadProc
(带有一些并发分离过程)?
对不起我的英语。 谢谢你的关注。
一个。
答案 0 :(得分:2)
您不应在MIDIReadProc
回调中进行任何UI同步。
这个回调是从高优先级的实时线程调用的,所以你必须避免做任何可能“太长”的事情。
正如你所说,你可以使用FIFO并在另一个线程(例如主线程)中处理它。
答案 1 :(得分:0)
我找到了一个解决方案,更新'NSSlider',移动滑块更新kvo路径中的代码,并使用后台进程分离的线程来更新滑块ui和值。 之后,我将ui控制与没有使用的分配分开,并使用键值等于midi控件的'NSMutableDictionary',以便在MIDIReadProc中更快地识别'NSSlider'。
感谢您的关注。