我正在使用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
I类处置一些纹理的我都用过,我SpriteBatch
和GraphicsDevice
:
public void CleanUp()
{
HandIcon.Dispose();
JointIcon.Dispose();
_ColourImage.Dispose();
_DepthImage.Dispose();
_SpriteBatch.Dispose();
_GraphicsDevice.Dispose();
}
有没有人有什么建议吗?还是有我犯的明显错误?
编辑1:我忘了提及我使用Kinect的轮询方法,这就是为什么我没有注销任何事件的原因。
编辑2:为了说明起见,系统过程最终释放文件 - 它不保持锁定状态。我认为这通常需要一到两分钟。
更新1:我确实安装了防病毒软件。我禁用了它,但它没有解决问题。
更新2:我可以确认这是我的台式机特有的问题。我还没有在笔记本电脑上重现这个问题。
这可能是一个愚蠢的问题,但程序仍在运行? – Jimmy
这几乎总是由反恶意软件引起的,当它看到一个EXE文件从不知名的地方出现时,它总是会很快退出。特别是当它是知名的麻烦制造者Avast时。先尝试禁用它,看看问题是否消失。 –
@Jimmy,程序没有停止。我通常会测试一些东西,进行更改,然后再次进行调试。我在进行这些更改后重建时遇到此问题。 –