我想在Silverlight OOB应用程序中使用AutomationFactory
访问WMI。
dynamic locator = AutomationFactory.CreateObject("WbemScripting.SWbemLocator");
dynamic wmi = locator.ConnectServer(".", "\\root\\cimv2");
我现在想为此添加错误处理。
MSDN指出,如果调用成功,则返回值是对连接对象的引用,并且在发生错误的情况下,我应该检查
Err
对象。但是,我对此有两个问题:如果呼叫失败,返回值是多少?空值?我不能使用一些任意指针?
如何在Silverlight中访问
Err
对象?如何检测通话是否成功?我是否有任何例外需要抓住?
我看过一些使用
using
语句的示例,有些则没有。使用动态对象后,是否必须手动处理它们? 最佳答案
如果呼叫失败,返回值是多少?空值?我不能使用一些任意指针?
当对COM组件的调用失败时,不会返回任何值,并且分配的LHS不会被修改。而是抛出COMException
。
如何在Silverlight中访问Err
对象?
这不是“ Err”对象,而是VB(Script)构造,在C#中不存在。但是,您所需要的信息将作为呼叫失败时抛出的COMException
的属性可用。
如何检测通话是否成功?我是否有任何例外需要抓住?
是的,请参见上文。
我看过一些使用using
语句的示例,有些则没有。使用动态对象后,是否必须手动处理它们?
尝试使用Dispose管理COM对象生存期的结果多种多样。就个人而言,我将确保具有“ Close”方法之类的任何东西都具有“ Close”方法调用并将其留在那。
如果确实要释放用户COM对象,则在适当的时候(而不是太频繁)调用GC.Collect
。