Blankman
Blankman

Reputation: 267060

Will calling close() on my WCF service release all resources?

Will calling close on my WCF service kill all resources or set them up for GC or should I set it to null also?

Upvotes: 4

Views: 1643

Answers (3)

Marc Gravell
Marc Gravell

Reputation: 1063058

Firstly, WCF proxies are IDisposable, so you can kind of use using:

using(var proxy = new MyProxy()) { // see below - not quite enough
   // use proxy
}

Unfortunately, WCF also has a buggy Dispose() implementation that regularly throws exceptions. However, here's a really cool trick to get it to work correctly. I also blogged about this myself, but I think the first link is a lot better.

So: use IDisposable and using, but use it with caution (in this case).

Setting a field usually makes no difference. There are a few edge-cases (such as variables captured by multiple delegates, static fields, long-life objects, etc), but in general leave it alone. In particular, do not do this, as this can theoretically extend the life:

if(field != null) field = null; // BAD

Upvotes: 5

MichaelGG
MichaelGG

Reputation: 10006

You only need to set a variable to null if it's going to be reachable for a long time afterwards. Say, a field on a long-lived object, or a static field. This holds in general, not just for WCF.

Upvotes: 0

Related Questions