2013-08-23 21 views
0

當我讀到這個:How to properly and completely close/reset a TcpClient connection?使用TCPClient和TCP.GetStream()?

我知道GetStream和客戶端幾乎是2個不同的對象。這意味着我將不得不處置它們。

然而,我並沒有得到的是,如果它真的是這樣的。

原因Visual Studio Analyze始終會告知何時不處置一個Disposable項目(即使它稍後,但它確實希望您使用Using)。它從來沒有說過有關GetStream()的任何內容。

但是,如果它是正確的,無論如何,這是否意味着我將不得不使用這樣的事情:

  using (tt1 = tcplisten.AcceptTcpClient()) 
      using(var tcpstream = tt1.GetStream()) 

它只是似乎不可思議,但我不希望一次性資源鋪設一下,這樣更好深究它的底部。

+0

你想要處置兩者。你的問題是什麼? –

+0

你是說,我想要,還是我應該?我的問題是,我應該同時使用Using還是隻能使用tt1(正如我迄今爲止所做的那樣)。 – Zerowalker

回答

1

關閉客戶端將不會關閉與其關聯的流。 因此,你需要調用

tt1.GetStream().Close(); 
tt1.Close(); 

如果你只是關閉客戶端,則該流將保持活躍,依然能夠佔據資源。

+0

因此,當我使用TCP客戶端時,我必須使用雙重使用? – Zerowalker