에 충돌는 BulletSharp는 다음 시작을 사용하여 응용 프로그램 종료
Utility.SafeDispose(bulletDynamicsWorld);
Utility.SafeDispose(constraintSolver);
Utility.SafeDispose(broadPhaseCollisionInterface);
Utility.SafeDispose(collisionDispatcher);
Utility.SafeDispose(collisionConfiguration);
Utility.SafeDispose(bulletCollisionWorld); <<< The error happens here >>>
강조 표시된 행을 실행하는 데 다음 오류가 발생합니다.
"런타임에 치명적인 오류가 발생했습니다. 오류의 주소는 0x6b1c9704, 스레드 0x1378에있었습니다. 오류 코드는 0xc0000005입니다. 이 오류는 CLR 또는 안전하지 않거나 확인할 수없는 사용자 코드 부분의 버그 일 수 있습니다. 이 버그의 일반적인 소스는 스택 손상 할 수있다, COM-상호 운용성 또는 PInvoke를위한 사용자 마샬링 오류가 "
참고 :.
1) 즉 충돌 개체 또는 동적 객체가없는 모든 총알 코드입니다. 추가되었다.
2) Utility.SafeDispose()는 IDiposable 소요 널 값에 대한 검사가 .Dispose()를 그 유효하다면.
3) 언어, C#을 분명히하기 위해 요구한다.
4) Utility.SafeD의 위치 .SafeDispose 문 목록에서 ispose (CollisionWorld)가 효과가없는 것 같습니다.
왜 충돌이 발생하며 어떻게 해결합니까?
감사합니다.
'2) Utility.SafeDispose()는 IDiposable을 가져오고 null 값을 검사하고 해당 유효성 검사에 .Dispose()가 호출되면 경쟁 조건처럼 냄새가납니다. – asawyer
어떻게 그렇게됩니까? "if (disposable! = null) disposable.Dispose();"와 다르지 않습니다. –
http://blogs.msdn.com/b/ericlippert/archive/2009/04/29/events-and-races.aspx 제가이 문제를 말하고있는 것은 아니며,보아야 할 것입니다. – asawyer