Ich muss in Echtzeit über die Funktionalität eines WCF-Dienstes berichten. Der Dienst wird in einer Windows-App selbst gehostet, und meine Anforderung besteht darin, der Host-App "live" zu melden, wenn bestimmte Methoden vom Client aufgerufen werden.Abonnieren von Ereignissen in einem WCF-Dienst
Mein erster Gedanke auf der Aufgabe war es, ein „NotifyNow“ Ereignis in dem Service-Code zu veröffentlichen und zu dem Ereignisse in meiner Berufung App abonnieren, aber dies scheint nicht möglich zu sein. In meinem Service-Code (Implementierung, nicht die Schnittstelle) Ich habe versucht, das Hinzufügen der folgenden
public delegate void MessageEventHandler(string message);
public event MessageEventHandler outputMessage;
void SendMessage(string message)
{
if (null != outputMessage)
{
outputMessage(message);
}
}
und rufen Sie die Sendmessage-Methode, wenn ich die Host-Anwendung von einer Aktion benachrichtigen müssen. (Dies basiert auf dem, was ich erinnere mich an diese Art von Inter-Form-Kommunikation in einer Winforms App, und mein Gedächtnis kann mich hier unten lassen ...)
Wenn ich versuche, den Event-Handler in meinem Host anschließen allerdings kann ich nicht scheinen, um herauszufinden, wie auf die Ereignisse ... Mein Hosting-Code ist (in aller Kürze)
service = new ServiceHost(typeof(MyService));
service.outputMessage += new MyService.MessageEventHandler(frm2_outputMessage);
// the above line does not work!
service.Open();
(eingewickelt in einer try/catch) zu befestigen.
Kann mir jemand helfen, entweder indem er mir sagt, wie ich diesen Ansatz zur Arbeit bringen kann oder indem er mir einen besseren Weg weist.
TIA
CustomEvent erscheint nicht unter Service1 für mich. Funktioniert das mit WCF 4.5? –