2011-09-20 43 views
1

我有一個主機有它彈出一個的MessageBox爲什麼隊列結果只有通過更改機制纔有所不同?

客戶只需激活該功能的方法。

它是工作,但什麼是奇怪的:如果我在客戶端點擊該按鈕多少次我看到幾個meesage箱

ChannelFactory<IMessagingService> channel = new ChannelFactory<IMessagingService>("NetTcpBinding_IMessagingService"); 

       IMessagingService proxy = channel.CreateChannel(); 
       proxy.Hello("Royi"); 

(不關閉最後一個!!!!!)

enter image description here

,但如果我更改客戶端代碼:(使用機構只是由

ChannelFactory<IMessagingService> channel = null; 

      using (channel= new ChannelFactory<IMessagingService>("NetTcpBinding_IMessagingService")) 
      { 
       IMessagingService proxy = channel.CreateChannel(); 
       proxy.Hello("Royi"); 
      } 

如果我嘗試多次按下客戶端按鈕 - 它WONT允許我!

enter image description here

這是產生彈出

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.PerCall)] 
    public class MessagingService : IMessagingService 
    { 

     public void Hello(string message) 
     { 
      MessageBox.Show(message); 
     } 


    } 

我想知道爲什麼

謝謝主機的代碼。

+0

我寧願看到代碼比那些奇特的圖片。 –

+0

我寫了代碼....(也) –

+0

那麼,回調(Pop)在哪裏? –

回答

1

第一個gues(不知道channelfactory是做什麼的): 使用將在proxy.Hello之後調用dispose方法。第一個示例在eachother旁邊使用多個ChannelFactory(直到GC銷燬它們),而第二個示例在打印Hello後總是銷燬ChannelFactory。

+0

事件,如果我摧毀它 - 當我再次按它重新創建它...不? –

1

不完整的代碼,但這看起來像一個雙綁定。你必須保持頻道的開放。

+0

所以問題在於頻道被破壞而沒有重建自己的能力? –

+0

我加了..... –

+0

我認爲摧毀頻道意味着它不應該工作,這使得第一個人成爲一個謎。可以工作得益於啓動延遲。 –

相關問題