Copyright © 2001 – 2026 David McCarter. All rights reserved.
The opinions expressed on this website are my own and do not necessarily represent those of my employer, clients, partners, customers, colleagues, friends, family, or any other organization with which I may be associated.
All content on this website is provided AS IS for informational, educational, and entertainment purposes. No warranties, express or implied, are made regarding the accuracy, completeness, reliability, suitability, or availability of the information presented.
Except as permitted by applicable law, the articles, text, photographs, graphics, illustrations, downloadable materials, and other original content published on this website may not be copied, reproduced, republished, redistributed, modified, sold, licensed, or commercially exploited without the prior written permission of David McCarter.
Artificial Intelligence and Machine Learning: Content from this website may not be scraped, harvested, copied, ingested, incorporated into datasets, or otherwise used to train, fine-tune, develop, evaluate, or improve artificial intelligence (AI), machine-learning systems, large language models (LLMs), generative AI systems, retrieval-augmented generation (RAG) systems, or similar technologies without the prior written permission of David McCarter, except where such use is permitted by applicable law.
Brief quotations and limited excerpts may be used for commentary, criticism, reviews, scholarly purposes, or other uses permitted by applicable law, provided appropriate attribution to David McCarter and this website is included.
Source Code and Code Samples: Source code, code samples, scripts, configuration files, and other software-related materials published on this website may be subject to separate licensing terms identified within the applicable article, source file, download, or software repository. Where separate licensing terms are provided, those terms govern the use, copying, modification, and distribution of that material.
All trademarks, service marks, product names, company names, logos, and registered trademarks appearing on this website are the property of their respective owners. Their appearance does not imply affiliation with, sponsorship by, or endorsement of this website or its author.
Nice demonstration of a misguided way to kmplement IDisposable. Even from the short look at it, it was obvious an unused finalizer was created just for the sake of “doing it by the book”, not to mention a lock(this) which is an antipattern in it’s own right, and here used for no reason. Dispose doesn’t need to be “thread-safe” when all it does is call Dispose on a few other objects.
I know this was not the point of the demonstration, but for me it was a huge red flag.