gpt4 book ai didi

c# - C# 中的 VBScript 错误处理

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:46 24 4
gpt4 key购买 nike

我想在 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(脚本)构造,它在 C# 中不存在。然而,您之后的信息将作为调用失败时抛出的 COMException 的属性提供。

  • 如何检测调用是否成功?是否有我必须捕获的异常?

是的,见上文。

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

使用 Dispose 管理 COM 对象生命周期的尝试有不同的结果。就我个人而言,我会确保任何具有“关闭”方法之类的东西都具有该“关闭”方法调用并将其保留在那里。

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

关于c# - C# 中的 VBScript 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7603506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com