Я использую Visual Studio 2010, создавая приложение XNA с Kinect SDK 1.6. У меня проблема с тем, что сборка обычно терпит неудачу (не всегда) после отладки приложения. Существует процесс блокировки 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
Я видел похожие сообщения вроде этого, но это не помогло. Я чувствую, что в моем приложении должно быть что-то, у кого все еще есть что-то. Я точно знаю, что когда приложение завершает выполнение следующего кода в моем классе 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: Я могу подтвердить, что это проблема, характерная для моего настольного компьютера. Я еще не воспроизвел проблему на своем ноутбуке.