Kinect SDK 1.6 で XNA アプリケーションを作成する Visual Studio 2010 を使用しています。アプリケーションをデバッグした後、ビルドが通常 (常にではありません) 失敗するという問題があります。ロックしているプロセスがあります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
クラスでは、使用したいくつかのテクスチャ、 my SpriteBatch
andを破棄しGraphicsDevice
ます。
public void CleanUp()
{
HandIcon.Dispose();
JointIcon.Dispose();
_ColourImage.Dispose();
_DepthImage.Dispose();
_SpriteBatch.Dispose();
_GraphicsDevice.Dispose();
}
誰か提案がありますか?それとも、私が犯した明らかな間違いがありますか?
編集 1: Kinect のポーリング方法を使用していることを忘れていました。そのため、イベントの登録を解除していません。
編集2:明確にするために、システムプロセスは最終的にファイルを解放します-ロックされたままにはなりません。通常、これには 1 ~ 2 分かかると思います。
更新 1:ウイルス対策ソフトウェアをインストールしています。無効にしましたが、問題は解決していません。
更新 2:これは私のデスクトップ マシンに固有の問題であることを確認できました。私はまだラップトップで問題を再現していません。