2010-08-18 5 views
0

Je suis nouveau dans le monde C#. J'ai un serveur COM écrit en C++ et dans certains cas il renvoie un variant_t :: missing(). Lorsque je tente de recevoir cette valeur en C#:Comment gérer la variante manquante

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

il lance une exception que je ne peux pas poignée d'événements en C#.

Comment je devrais faire?

Répondre

1

envelopper dans un try/catch:

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

Il ne fonctionne pas. L'exception est finalement interceptée par le code C++ où l'événement COM est déclenché. –

+0

Je suis confus par votre référence à un événement. Si vous parcourez le code, l'erreur se produit-elle lorsque vous exécutez l'objet a = comServer.Value? Avez-vous quelque chose en retour, même un null? – jac

+0

Le code en C++ de get_Value retourne variant_t :: missing() mais C# ne termine pas l'exécution de l'objet ligne a = comServer.Value donc je ne vois rien dans a car une exception est déclenchée dans le code C++. Le serveur COM C++ déclenche un événement, dans ce cas, le code C# exécute ce code et l'exception est finalement interceptée par le code C++ en ignorant la section C# try catch. –