我目前在C#MVC3项目中使用的com组件有点奇怪。
COM组件(名为YVPCUST)包含以下vb6例程:
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
C#MVC3项目使用COM组件层构建,该层直接引用名为YVPCUST的组件:
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);
GetDocument()
例程应该获取所提供代码的最大和最小年龄。但是,当我在编译或调试模式下运行应用程序并遍历最后一行时,minimumAge和maximumAge值设置不正确,它们被设置为默认值0(无论我重新执行此行的次数如何)。
但是,(在调试模式下)如果我中断最后一行的代码,而是使用QuickWatch运行该行,当我从QuickWatch窗口返回到代码时,当我将鼠标悬停在这些值上时,这些值将被设置为正确的最小和最大年龄。
有人知道为什么会发生这种情况吗?
这个COM组件可以在应用程序的其他地方使用(但不是这个rountine),没有问题。