我有一些在多线程类中运行的代码 基本上我创建了许多包含这个类的实例的线程。
在这个类中,我使用反射创建一个vb6或.net dll的对象,然后我调用该对象中的方法。被调用的对象每次都可以不同。
但是出于某种原因,即使通过我有多个线程,当我到达Activator.CreateInstance时,它不再是多线程的。这是为什么?我该如何解决?
我想捕获返回的错误并将其放入日志中。
If UCase(pRow("TypeVB6").ToString()) = "TRUE" Then
classType = Type.GetTypeFromProgID(ClasstoInstantiate, True)
Else
classType = Type.GetType(ClasstoInstantiate, True)
End If
Dim o As Object = Activator.CreateInstance(classType)
cError = classType.InvokeMember(MethodName, BindingFlags.InvokeMethod Or BindingFlags.Instance Or BindingFlags.Public, Nothing, o, New Object() {FilePath, VirtDir})
答案 0 :(得分:1)
解决方案的一些想法:
1)验证服务的主要入口点是否使用MTAThread Attribute
进行修饰2)在SyncLock statement中包装Activator.CreateInstance调用(可能还有以下InvokeMember方法)。