none
WMI et requetes asynchrones RRS feed

  • Question

  • Bonjour à tous,
    Voilà mon problème : j'effectue des requètes asynchrones sur un ordinateur distant, et j'aimerais savoir s'il y a un moyen de savoir si la non réponse n'est pas due au fait que la machine distante a rebooté entre temps.
    Je pourrais la pinger, mais ça diminue un peu l'efficacité d'une requete asynchrone pour la faible charge sur le réseau -_-

    J'attends vos lumières les gars, là je suis vraiment paumé.

    Robinson.
    jeudi 29 mai 2008 15:48

Toutes les réponses

  • Bonjour,

     

    Dans le cas où la machine ne répond pas, vous n'avez pas une levée d'exception ?

     

    Cordialement

    vendredi 30 mai 2008 11:48
    Modérateur
  • La machine n'est censée répondre que quand l'évènement a lieu. Donc si elle ne répond pas, le programme hôte n'a pas, AFAIK, à s'inquiéter.
    En très résumé, je passe une requête :
        
    Code Snippet

    Dim scope As New ManagementScope()

    scope.Path = New ManagementPath("\root\cimv2")

    'Je connecte le scope à la machine distante, avec droits d'admin
    Dim query As New WqlEventQuery( _
                        "SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE TargetInstance ISA 'Win32_LogicalDisk'")
                   
                    USBwatcher = New ManagementEventWatcher(scope, query)
                   
                    AddHandler USBwatcher.EventArrived, _
                        AddressOf HandleUSBEvent

    'Et plus loin, je traite l'évènement.


    Et après test, la machine qui passe la requête ne voit rien quand on éteind proprement la machine distante (la requête n'est pas stopped), pas de levée d'exception, rien..
    Ma connaissance du fonctionnement des requêtes asynchrones est assez limitée (malgré de longues heures à errer sur MSDN, je suis preneur de toute doc pouvant m'éclairer) mais de ce que je comprends ce comportement est normal.

    Cordialement,
    Robinson.
    vendredi 30 mai 2008 13:24
  •  

    Je ne suis pas sur a 100% mais il me semble que lorsque l'appel est interrompu l'event Stopped est déclenché...A vérifier toutefois :

    Code Snippet

      AddHandler USBwatcher.Stopped, AddressOf HandleUSBStopEvent

     

      //HandleUSBStopEvent : en vb je ne sais pas mais en c# :

    static void USBwatcher_Stopped(object sender, StoppedEventArgs e)

    {

    throw new NotImplementedException();

    }

     

    ++,

          Stéphane

    lundi 28 juillet 2008 11:27