0
我是C#世界的新手。我有一个用C++编写的COM服务器,在某些情况下,它返回一个variant_t :: missing()。 当我尝试获得在C#中该值:如何处理变体丢失
object a;
a = comServer.Value // Value returns missing
它抛出一个异常,我无法事件处理在C#。
我该怎么办?
我是C#世界的新手。我有一个用C++编写的COM服务器,在某些情况下,它返回一个variant_t :: missing()。 当我尝试获得在C#中该值:如何处理变体丢失
object a;
a = comServer.Value // Value returns missing
它抛出一个异常,我无法事件处理在C#。
我该怎么办?
包装在一个try/catch:
try
{
object a = comServer.Value;
}
catch (Exception ex)
{
// handle the error
}
它不工作。 COM事件被触发的C++代码最终捕获异常。 – 2010-08-19 01:00:20
我对你参考一个事件感到困惑。如果单步执行代码,执行对象a = comServer.Value时会发生错误吗?你有什么回报,甚至是空? – jac 2010-08-19 02:57:16
get_Value的C++中的代码返回variant_t :: missing()但C#没有完成行对象的执行a = comServer.Value,所以我看不到任何内容,因为在C++代码中触发了异常。 C++ COM服务器触发一个事件,在那种情况下,C#代码执行这段代码,并且这个异常最终被C++代码捕获,而忽略了C#try catch部分。 – 2010-08-19 13:29:47