我们正在使用COM Interop(C#)来允许VB6应用程序向服务器发送数据。一旦服务器接收到数据,托管代码将引发DataSent事件。只有在返回相关ID给原始调用方之后,此事件才会被触发。
大约1%的时间,我们遇到VB6在完成最初发送数据的函数之前执行了引发的事件。
使用以下代码:
我们可以验证当我们调用
VB6如何访问消息循环以知道
感谢您的帮助。
大约1%的时间,我们遇到VB6在完成最初发送数据的函数之前执行了引发的事件。
使用以下代码:
' InteropTester.COMEvents is the C# object '
Dim WithEvents m_ManagedData as InteropTester.COMEvents
Private Sub send_data()
Set m_ManagedData = new COMEvents
Dim id as Integer
' send 5 to using the managed interop object '
id = m_ManagedData.SendData(5)
LogData "ID " & id & " was returned"
m_correlationIds.Add id
End Sub
Private Sub m_ManagedData_DataSent(ByVal sender as Variant, ByVal id as Integer)
LogData "Data was successfully sent to C#"
' check if the returned ID is in the m_correlationIds collection goes here'
End Sub
我们可以验证当我们调用
m_ManagedData.SendData(5)
时,id会返回一个值,但日志显示m_ManagedData_DataSent
有时在send_data
结束之前被调用。VB6如何访问消息循环以知道
DataSent
事件在退出send_data()
之前被触发?我们没有调用DoEvents
,而且VB6中的所有内容都是同步的。感谢您的帮助。