我有一个用NAudio播放音频的应用程序。NAudio的一个已知限制是,每次垃圾收集器运行时,每个线程都会暂停,直到它完成。
应用程序运行良好,所有GC都在可接受的时间内完成,并且没有卡顿。
但是我们也有一个单独的应用程序,它每秒通过TCP向主应用程序(带有音频播放器)发送一个缩略图。当编码为JPEG时,缩略图大约为1300字节。
这是我们目前用来解码图像的代码:
MemoryStream ms = new MemoryStream(data);
BitmapDecoder bdec = BitmapDecoder.Create(ms, BitmapCreateOptions.None, Bi
目前,我在屏幕上有一个图像,它每5秒与另一个图像交换一次,并使用动画来完成此操作。
同时,在屏幕上,我有用户可以拿起并拖动的对象(使用平移手势)。在动画的.5期间,如果我在对象周围移动,UI就会卡顿。例如,我有一个画笔,我拿起它在屏幕上移动。5秒计时器结束,背景图像更新。而这会在动画发生时更新画笔卡顿。我移动了加载UI线程的图像,并使用NSData强制加载它。
有没有一种方法可以防止这种卡顿,而动画更改图像运行。下面是我交换图像的方式。
// Dispatch to the queue, and do not wait for it to complete
// Grab image in b
作为练习,我试着做了一个简单的程序,你所要做的就是控制屏幕周围的方块。我试着用插值法做一个游戏循环,但是我对它有问题,它经常卡顿,我不知道为什么。我已尝试删除Thread.sleep(%1);以确定这是否是问题所在。如果我去掉它,它实际上会减少卡顿,fps会从300fps左右跳到8000fps左右。当然,如果我让这个游戏变得更复杂,我就不能得到8000fps,所以我想看看如果我只有大约300fps,是否仍然存在卡顿,所以我所做的就是在屏幕上添加了一堆方块。这使fps降到了300左右,我注意到卡顿又回来了。我已经看过和了,但是我没有找到一个解决方案。我做错了什么?
游戏循环:
int t