Not sure if still relevant, but here you go:
Consider refactoring your
if (this.disposed) { }into a method likeThrowIfDisposed(). If you ever want to change yourthe dispose method or add logging or whatnot then you have to change only one place. Code duplication should be avoided even for trivial things like that.You swallow exceptions in
HookandUnhookand return aboolwhich tells you nothing except that it went wrong. Same inOpenConnectionandCloseConnetion. You throw away aA lot of information is thrown away which will be useful for troubleshooting should the need arise. In general I would consider that a bad idea.Replace yourthe magic constant
Thread.Sleep(100);either with aconstdefinition or even a setting you can tweak. If you make it a setting please make it aTimeStamp- I personally find all that code which scatters aroundints with implicit units very annoying. I often have to look up what it means because it's not always that obvious - seconds, milliseconds, ..?