2010-08-18 30 views
0

我是C#世界的新手。我有一个用C++编写的COM服务器,在某些情况下,它返回一个variant_t :: missing()。 当我尝试获得在C#中该值:如何处理变体丢失

object a; 
a = comServer.Value // Value returns missing 

它抛出一个异常,我无法事件处理在C#。

我该怎么办?

回答

1

包装在一个try/catch:

try 
{ 
    object a = comServer.Value; 
} 
catch (Exception ex) 
{ 
    // handle the error 
} 
+0

它不工作。 COM事件被触发的C++代码最终捕获异常。 – 2010-08-19 01:00:20

+0

我对你参考一个事件感到困惑。如果单步执行代码,执行对象a = comServer.Value时会发生错误吗?你有什么回报,甚至是空? – jac 2010-08-19 02:57:16

+0

get_Value的C++中的代码返回variant_t :: missing()但C#没有完成行对象的执行a = comServer.Value,所以我看不到任何内容,因为在C++代码中触发了异常。 C++ COM服务器触发一个事件,在那种情况下,C#代码执行这段代码,并且这个异常最终被C++代码捕获,而忽略了C#try catch部分。 – 2010-08-19 13:29:47