我在我的c#项目中加载COM DLL。它通常可以工作,但在过去几周中有3次,COM对象“变为”无效。
奇怪的是,对象在“变为”空之前的两行中使用。
var comType = Type.GetTypeFromProgID("MyDllLibrary");
var abc = Activator.CreateInstance(comType);
var first = "first";
var second = "second";
//comType is not null and works fine
comType.InvokeMember("First", System.Reflection.BindingFlags.SetProperty, null, abc, new object[] { first });
comType.InvokeMember("Second", System.Reflection.BindingFlags.SetProperty, null, abc, new object[] { second });
string data = "data";
//comType becomes null here...
//ERROR: Object reference not set to an instance of an object.
var workedData = comType.InvokeMember("DoWork", System.Reflection.BindingFlags.InvokeMethod, null, abc, new object[] { data });
这似乎是随机发生的,很少发生。我无法重现它。 知道为什么会发生这种情况以及如何预防吗?