【发布时间】:2013-01-11 21:42:22
【问题描述】:
我正在使用 Visual Studio 2010 创建一个带有 Kinect SDK 1.6 的 XNA 应用程序。我有一个问题,即在调试应用程序后构建通常会失败(并非总是)。有一个进程正在锁定KinectDrobePrototype1.exe。
Error 12 Unable to copy file "obj\x86\Debug\KinectDrobePrototype1.exe" to
"bin\x86\Debug\KinectDrobePrototype1.exe". The process cannot access the file
'bin\x86\Debug\KinectDrobePrototype1.exe' because it is being used by another
process.
Error 11 Could not copy "obj\x86\Debug\KinectDrobePrototype1.exe" to
"bin\x86\Debug\KinectDrobePrototype1.exe". Exceeded retry count of 10. Failed.
我使用了Process Explorer,它告诉我这是System 进程。
Process | PID | Type | Name
System 4 File C:\Users\ ... \KinectDrobePrototype1\KinectDrobePrototype1\KinectDrobePrototype1\bin\x86\Debug\KinectDrobePrototype1.exe
我看过类似的帖子,例如this,但没有帮助。我觉得我的应用程序中一定有一些东西仍然可以处理一些东西。我确信当应用程序终止时,以下代码会在我的 KinectManager 类中执行。
public void CleanUp()
{
if (ActiveKinectDevice != null)
UnintialiseDevice(ActiveKinectDevice);
}
private void UnintialiseDevice(KinectSensor device)
{
device.Stop();
device.ColorStream.Disable();
_ColourPixelData = null;
device.DepthStream.Disable();
_DepthPixelData = null;
device.SkeletonStream.Disable();
_SkeletonData = null;
}
我对 XNA 很陌生,所以可能有一些我没有做过的事情。在UnloadContent 我有以下内容:
protected override void UnloadContent()
{
_KinectManager.CleanUp();
_DrawingManager.CleanUp();
}
然后在我的DrawingManager 课程中,我处理了我使用过的少数纹理,我的SpriteBatch 和GraphicsDevice:
public void CleanUp()
{
HandIcon.Dispose();
JointIcon.Dispose();
_ColourImage.Dispose();
_DepthImage.Dispose();
_SpriteBatch.Dispose();
_GraphicsDevice.Dispose();
}
有人有什么建议吗?还是我犯了一个明显的错误?
编辑 1: 我忘了提到我正在使用 Kinect 的轮询方法,这就是为什么我没有取消注册任何事件的原因。
编辑 2: 澄清一下,系统进程最终会释放文件 - 它不会保持锁定状态。我认为这通常需要一到两分钟。
更新 1: 我确实安装了防病毒软件。我已禁用它,但它并没有解决问题。
更新 2: 我可以确认这是我的台式机特有的问题。我还没有在我的笔记本电脑上重现这个问题。
【问题讨论】:
-
这可能是个愚蠢的问题,但程序还在运行吗?
-
这几乎总是由反恶意软件引起的,当它看到一个 EXE 文件不知从哪里出现时,它总是非常退出。尤其是当它是著名的麻烦制造者 Avast 时。先尝试禁用它,看看问题是否消失。
-
@Jimmy,程序没有停止。我通常会测试一些东西,进行更改,然后再次进行调试。我在进行这些更改后重建时遇到了这个问题。
-
@Hans 我已经安装了防病毒软件,但我还没有尝试禁用它。
-
嗯,谢谢你告诉我。盖克。
标签: visual-studio-2010 xna kinect