I was having a problem where if my program errored out, the twain driver wouldn't work until I rebooted. The problem was caused by not closing the twain driver before exiting. Not a graceful recovery at all. However, I found that instead of having to reboot, I could fix the problem by restarting the WIA service.
A twain driver is not a WIA driver, why is it required to either reboot or restart the WIA service if you exit without closing the twain driver? That doesn't make any sense, and it makes for extremely fragile code that is not robust.
