c#中的VBScript错误处理
本文关键字:处理 错误 VBScript 中的 | 更新日期: 2023-09-27 18:10:08
我想在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
。