2011-11-21 1 views
0

현재 C# MVC3 프로젝트에서 사용중인 com 구성 요소와 약간 이상한 점이 있습니다. (YVPCUST 이름)COM 구성 요소에 대한 호출이 VisualStudio QuickWatch 윈도우를 사용하여 값만 반환하는 이유는 무엇입니까?

COM 구성 요소는 다음과 VB6 루틴을 포함

qtcsl32.YVPCUST yvpCust = new qtcsl32.YVPCUST(); 

object code = (object)"RAAG"; 
object minimumAge = 0; 
object maximumAge = 0; 
object suffix = (object)string.Empty; //not to be used 

int returnCode; 

returnCode = yvpCust.GetDocument(code, minimumAge, maximumAge, suffix); 

다음 C#의 MVC3 프로젝트는 직접 구성 요소라는 이름의 YVPCUST를 참조하는 COM 구성 요소 층을 사용하여 구축

Public Function GetDocument(ByVal a_sCode As Variant, ByRef a_sLocation As Variant, ByRef a_sDestination As Variant, ByRef a_sSuffix As Variant) As Integer 
    Dim oSystem  As System 

    Set oSystem = CreateObject("qtcsl32.System") 
    GetDocument = oSystem.GetDocumentByRef(a_sCode, a_sLocation, a_sDestination, a_sSuffix) 
    Set oSystem = Nothing 

End Function 

GetDocument() 루틴은 제공된 코드의 최대 및 최소 연령을 가져야합니다. 그러나 컴파일 또는 디버그 모드에서 응용 프로그램을 실행하고 마지막 행을 단계별로 실행하면 minimumAge 및 maximumAge 값이 올바르게 설정되지 않고이 행을 다시 실행 한 횟수에 관계없이 기본값 0으로 설정됩니다.).

그러나이 마지막 줄의 코드를 중단하고 QuickWatch를 사용하여 줄을 실행하면 (QuickWatch 창에서 코드로 돌아갈 때 값이 올바른 최소 및 최대 시간으로 설정됩니다. 내가 그들 위에 마우스를 올려 놓았을 때.

왜 이런 일이 일어날 지 모르는 사람이 있습니까?

이 COM 구성 요소는 응용 프로그램의 다른 여러 위치 (이 루틴은 제외)에서 아무 문제없이 사용됩니다.

short GetDocument(object a_sCode, ref object a_sLocation, ref object a_sDestination, ref object a_sSuffix); 

내가 그 코드 라인 (REF의 포함)에 기록되어 있어야 실현 :

답변

0

나는 COM 구성 요소에 대한 C#을 래퍼는 다음과 같은 선언을 한 것을 깨달았다

returnCode = yvpCust.GetDocument(code, ref minimumAge, ref maximumAge, suffix); 

이 아무튼에게 QuickWatch 창을 사용하여 왜 작동하는지 설명하지만 필요한 결과를 얻을 수있었습니다.

관련 문제