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语句的例子,有些没有。我必须在使用动态对象后手动处理它们吗?

c#中的VBScript错误处理

  • 如果调用不成功,返回值是什么?空吗?某个我不能使用的任意指针?

当对COM组件的调用失败时,不返回值并且赋值的LHS不被修改。相反,会抛出COMException

  • 我如何在Silverlight中访问Err对象?

这不是"Err"对象,这是一个VB(Script)构造,它不存在于c#中。然而,当调用失败时,您所追求的信息将作为抛出的COMException的属性可用。

  • 如何检测呼叫是否成功?有没有什么例外情况是我必须了解的?

可以,见上文。

  • 我见过一些使用using语句的例子,有些没有。我必须在使用动态对象后手动处理它们吗?

尝试使用Dispose来管理COM对象的生存期会产生不同的结果。就我个人而言,我会确保任何有类似"Close"方法的东西都有那个"Close"方法调用,然后就到此为止。

如果你真的想让用户COM对象被释放,那么在适当的时候(不要太频繁)调用GC.Collect