2011-12-23 1 views
1

.NET Framework 3.5를 사용하고 있지만 Framework 4.0을 사용하는 동안 잘 작동하는 프로젝트에서 작업하고 있습니다. 그것은 잘 작동했다. 그러나 언젠가 나는 다음과 같은 오류가 발생했습니다. "보호 된 메모리를 읽거나 쓰려고 시도했습니다. 이것은 종종 다른 메모리가 손상되었다는 표시입니다." try catch를 사용하여 Exception을 잡으려고 시도하지만 여전히 예외를 catch하지는 않습니다. 왜 이런 일이 일어나고 있는지 잘 모르겠습니다. FrameWork 4.0에 문제가 있습니까? 아무도 나를 제안 할 수 있습니다. 나는보호 된 메모리를 읽거나 쓰려고 시도했습니다. 이것은 종종 다른 메모리가 손상되었다는 표시입니다.

  1. 도구 메뉴처럼 다른 일을 시도 -> 옵션 -> 디버깅 -> 일반 ->이 옵션 "모듈로드에 JIT 최적화를 억제"를 선택 해제 닷넷 프레임 워크 4.0에 대한 마이크로 소프트의

  2. 다운로드 핫픽스 등등. 하지만 여전히 나는 .. 어떤 하나의 문제는 ShowDialog에 의해 호출하는 방법 또는 이벤트 핸들러에서, 당신의 VersionsForm 대화 상자에서 어딘가에 아마


protected override bool ConcreteExecute() 
{ 
    using (BusinessLogic.GUI.VersionsForm dlg = new BusinessLogic.GUI.VersionsForm(_infoItems[0])) 
    { 
     try 
     { 
      dlg.ShowDialog(); <= AccessViolation Exception comes from here but didn't catch 
     } 
     catch (AccessViolationException ex) 
     { 

     } 
    } 

    return true; 
} 
+0

대화 상자에서 포인터 액세스 (안전하지 않은 코드)를 사용하고 있습니까? – Tigran

+0

VersionsForm이 관리되지 않는/안전하지 않은 코드를 사용합니까? – Strillo

+4

대답은 우리에게 보여주지 않은 코드에 있습니다. –

답변

1

제안 할 수 있습니다이 문제를 해결하지 못했습니다. 코드 VersionsForm에 중단 점을 넣고 오류가 발생한 위치를 정확히 찾아 낼 수 있는지 확인하십시오.

AccessViolation 예외를 얻으려면 관리되지 않거나 안전하지 않은 코드가 관련되어야합니다. 순수 관리 코드는이를 생성 할 수 없으므로 관리되지 않는 코드가 사용되거나 외부 관리되지 않는 코드가 호출되는 위치에 중단 점을 두는 데 중점을 두어야합니다.

+0

안녕하세요, 심지어 내가 그 오류를 잡을 수없는 중단 점을 사용합니다. 내가 그 블록에 캐치를 시도해도 오류를 잡지 못했습니다. 그러나 문제는 관리되지 않는 코드를 사용하기 때문에 발생할 수 있다고 생각했습니다. 어떻게 내 코드에서 외부 관리되지 않는 코드를 감지하거나 확인할 수 있습니까 ?? – user1113039

+0

인터페이스 ICloneable을 사용하고 있기 때문에 인터페이스 위에 쓸 수 없습니다. – user1113039

+0

#region 어셈블리 mscorlib.dll, v2.0.50727 // C : \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorlib.dll # 끝 영역 – user1113039

관련 문제

 관련 문제