2013-08-23 22 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