2010-12-06 9 views
0

Hallo
Obwohl es eine einfache Sache ist, weiß ich nicht, wie es geht.
Ich versuche, die DLL zu Ereignissen auf der Serverseite zu unterzeichnen.
Die Clients haben eine Instanz dieser DLL und sie müssen Benachrichtigungen vom Server erhalten.
auf den Dienst definiert I (C#):
Ereignisse vom WCF-Dienst auf den Verbrauch von DLLs wecken

public delegate ActionResult ActionComplitedHandler(object sender,ActionComplitedEventArgs e); 

.

public event ActionComplitedHandler ActionComplited; 

     public void OnActionComplited(ActionResult actionResult) 
     { 
      if (ActionComplited != null) 
      { 
       ActionComplitedEventArgs args = new ActionComplitedEventArgs(); 
       args.ActionResult = actionResult; 
       ActionComplited(this, args); 
      } 
    } 

Aber wenn ich versuche, die dll zu dem Ereignis zu unterzeichnen, kann ich es nicht sehen.

mySeriveInstance.ActionComplited+=... //(I don't get the eventHandler after the dot) 

Ich bevorzuge nicht WCF Callback zu verwenden.
Die WCF-Dienstinstanz ist Single.
Was mache ich falsch und gibt es eine andere Methode, das zu tun?
Danke.

+0

Sie können die automatische Vervollständigung nicht verwenden oder Sie können kein Ereignis empfangen? –

+0

Ich sehe die Autocomplite nicht. – Igal

Antwort

0

Es gibt zwei grundlegende Möglichkeiten, wie Sie dies tun:

1.) Sie können sich selbst Host einen WCF-Dienst in Ihrer Client-Anwendung, und in dem Aufruf an den Server weiter in der IP-Adresse des Client-Rechners . Der Server kann dann einen Proxy erstellen und zum Client zurückrufen, wenn er ein Ereignis senden möchte.

2.) Sie können ab und zu nach Ereignissen vom Server suchen. Geben Sie jedem Client in seiner Dienstantwort eine Kennung, und dann können sie den Server mit dieser Kennung immer wieder aufrufen. Sie können das Caching auf der Serverseite verwenden, um eine Liste der nicht zugestellten Ereignisse zu speichern, und wenn ein Client diese Verknüpfung erreicht, geben Sie das älteste Ereignis für den Client zurück.

Verwandte Themen