创建ActiveX DLL COM对象的多个实例

时间:2014-06-19 02:36:01

标签: vb.net multithreading dll com appdomain

我有一个VB6 dll,我需要从.NET应用程序调用。我想在.net中的不同线程上的DLL的一个类中执行一个函数 - 也就是说,每个线程一个单独的DLL实例。使用单线程,一切都很好。但是对于多个线程,似乎只使用了一个dll实例。我应该注意该函数将几个ADODB记录集作为参数并返回一个整数。当我返回.net时,记录集已经更新。我还必须设置两个类参数。

MYDLL.DLL

  Public Class MyClass

    Public Function MyFunction(rs1 As Recordset, rs2 As Recordset) As Integer

      'some work

    End Function

  End Class

.net app

  Public Class NetClass

    Public Sub DoIt()

      Dim md As New MyDelegate(AddressOf WorkIt)
      md.BeginInvode(rs1, rs2, Nothing, Nothing)

    End Sub

    Private Delegate Sub MyDelegate(ByVal rs1 As Recordset, ByVal rs2 As Recordset)

    Private Sub WorkIt(ByVal rs1 As Recordset, ByVal rs2 As Recordset)

      Dim ad As AppDomain = AppDomain.Create([a variable])
      Dim obj As Object = ad.CreateComInstanceFrom("C:\Program Files\MyDll.dll", "MyDll.MyClass")

    End Sub
  End Class

在WorkIt()子句中,第二行产生错误“无法加载文件或程序集”文件:/// C:\ Program Files \ MyDll.dll'或其中一个依赖项。模块预计会包含一个程序集清单。

有人可以指出我正确的方向吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

This article正是我所寻找的。