我看着微軟的雙工WCF示例:任何方式來判斷DuplexClientBase是否忙?
// Wait for callback messages to complete before
// closing.
System.Threading.Thread.Sleep(5000);
// Close the WCF client.
wcfClient.Close();
Console.WriteLine("Done!");
如果你把睡眠,你會得到一個異常
郵件傳輸完成之前會話被關閉。
很清楚,客戶知道空氣中有東西,有沒有辦法要求它的當前狀態?有一個狀態,但只是定義它是打開還是關閉(即連接不活動)。
是的,在我的實際應用程序,我用更多的是發佈 - 訂閱模式,所以你所謂的退訂之後,你真的不希望收到回調。我驚訝地發現,在「早」關閉wcfClient後,客戶端應用程序中出現異常。我會標記你是正確的,因爲你好,但請隨時再評論。 – Ian
這是因爲存在雙工綁定的可靠會話。在您的服務中調用方法後,ReliabeSession將發送交換消息(在通道層中)以保證消息傳遞。因此,從純粹的「服務」角度來看,仍然有一些信息正在交換。它們不是你的 - 它們是ReliableSession消息。在這些消息完成之前,您正在關閉所有的東西。 –
哦,我明白了,我不知道。有沒有辦法知道可靠的會話是否仍然「活躍」? – Ian