The Uninitialize method terminates any connection
established by the control and resets the internal state of the
control. This method is not typically used because any resources that
have been allocated by an instance of the control will automatically
be released when it is destroyed.
Each time the Initialize method is invoked, it increments an
internal counter that keeps track of the number of times that it has
been called by any thread in the current process. The Uninitialize
method decrements this counter, and when the usage count drops to
zero, the control will automatically unload the system libraries that
it has dynamically loaded and will destroy the process heap that was
allocated when the first instance of the control was created. An
application should only call the Uninitialize method if it has
explicitly called the Initialize method.
The Reset and Uninitialize methods will abort all
active background transfers and wait for those tasks to complete
before returning to the caller. It is recommended that your
application explicitly wait for background transfers to complete or
abort them using this method before allowing the program to terminate.
This will ensure that your program can perform any necessary cleanup
operations. If there are active background tasks running at the time
that the control instance is destroyed, it can force the control to
stop those worker threads immediately without waiting for them to
terminate gracefully.