2012-04-11 154 views
3

有誰知道一種方法來創建一個代理偵聽器,以便當CommunicationState發生變化時,我可以調用一個動作或方法?CommunicationState監聽器?

例如,我想更新我的WCF服務以進行代碼更改。由於應用程序在其早期開發中,代碼更改非常頻繁。但是,不要用電子郵件來煩擾我的員工,而是告訴他們,他們需要重新啓動他們的應用程序。我寧願避免他們必須重新啓動應用程序,併發送給他們一封電子郵件。我寧願編寫一個監聽器來查看服務的通信狀態,如果它已更改爲故障聲明,則嘗試重新連接。

編輯

也許這裏的一些更多的上下文。

InstanceContext context = new InstanceContext(this); 
Subscriber = new SubscriptionService.MySubscriptionServiceClient(context); 
Subscriber.Subscribe(""); 

所以基本上我想知道何時訂閱服務已停止,以便我可以嘗試每60秒左右重新連接。我試圖在Subscriber服務中尋找一個事件,但我什麼也沒看到。我需要在服務端實現一些東西嗎?

感謝

+1

請不要用「C#WCF」和這樣的前綴您的標題。這就是標籤的用途。 – 2012-04-11 19:21:46

+0

好的...有什麼特別的原因嗎?如果您指定而不是僅僅發表聲明,那將會很好。 – meanbunny 2012-04-11 19:24:33

+0

因爲「這就是標籤的用途」。 – 2012-04-11 19:26:40

回答

1

您可以使用您生成的客戶端類的InnerChannel屬性中的故障事件。客戶類的State屬性只是InnerChannel.State的包裝,所以這應該按照您的要求工作。

(僅供參考,你也可以,如果你在代碼中創建的溝通渠道,而不是使用生成的代理使用上ChannelFactory<TChannel>名稱類似的事件。)

+0

謝謝。我能夠成功鎖定Faulted事件並重新訂閱客戶端到服務。這工作完美無瑕! – meanbunny 2012-04-11 20:27:20

+0

不客氣:) – Alan 2012-04-11 20:29:13