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