Die erste ist, dass seine Anwendung die aktuelle Liste der Sitzungen nicht abgerufen hat. Dies ist eines der wirklich subtilen Dinge über die Session Enumeration APIs. Um eine Wettlaufsituation zu verhindern, die auftreten kann, wenn eine Sitzungsbenachrichtigung eintrifft, während die Anwendung mit den Sitzungs-APIs gestartet wird, verwirft die Sitzungsaufzählungs-
API neue Sitzungsbenachrichtigungen, bis die Anwendung zuerst die Liste der vorhandenen Sitzungen abgerufen hat.
Das erwartete Nutzungsverhalten ist:
Anwendung aktiviert einen Session-Manager2. Anwendungsregister für Sitzungsbenachrichtigungen. Die Anwendung ruft die aktuelle Liste der Sitzungen für den Endpunkt ab und speichert die Sitzungssteuerungsobjekte in einer Liste (vergessen Sie nicht, die Sitzung hinzuzufügen).
Wenn ein neuer Modus erstellt wird, nimmt die Anwendung eine Referenz auf das neu erstellte Session-Control-Objekt und fügt es in die Liste ein, falls es noch nicht vorhanden ist. Beachten Sie, dass das in die Benachrichtigung übergebene Sitzungssteuerungsobjekt zerstört wird, wenn die Sitzungsbenachrichtigung zurückkehrt - wenn Sie GetSessionEnumerator an dieser Stelle aufrufen, wird es wahrscheinlich NICHT die neu erstellte Sitzung halten (es könnte sein, es hängt alles vom Timing ab).