Crap! I went to look up the original information I read about the using vs. try/finally and instead stumbled upon MSDN's own documentation or it confirming your statement: http://msdn.microsoft.com/en-us/library/yh598w02(v=vs.90).aspx. However, MSDN also documents, for example within their WCF pages, about the risks of using "using" if you're not fully aware: http://msdn.microsoft.com/en-us/library/aa355056.aspx. There's also supposed internal discussions: http://social.msdn.microsoft.com/forums/en-US/wcf/thread/4cdc67e0-3069-4d3b-b94f-27e2b8ff4429/. They're all around special clean-up scenarios and situations where your cleanup itself might fail but not be obvious in the syntax of the code. Those are all more prevalent with WCF, I suspect, than Lucene.NET.
Brian Sayatovic Senior Software Architect 866-218-1003 toll-free ext. 8936 937-235-8936 office 4540 Honeywell Ct. Dayton, OH 45424 This message may contain confidential/proprietary information from the CINgroup or its subsidiaries. If you are not an intended recipient, please refrain from the disclosure, copying, distribution or use of this information. All such unauthorized actions are strictly prohibited. If you have received this transmission in error, please notify the sender by e-mail and delete all copies of this material from any computer. -----Original Message----- From: Nicholas Paldino [.NET/C# MVP] [mailto:casper...@caspershouse.com] 1) That is not true, using ultimately compiles down to a try/finally. It's always called no matter how the block is exited. 2) This is a fault of the implementation. It is up to the implementer to create a finalizer that disposes of resources that don't implement IDisposabe but need disposal (think raw handles). Regardless, try/finally doesn't improve the experience here; whatever method you use to have the caller deterministically release resources won't do any good if the finalizer isn't implemented correctly. Implementing IDisposable doesn't get you special consideration in the finalizer.