KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Is there a standard way to close out an application "cleanly" while some WaitHandle objects may be in the state of a current blocking call to WaitOne ? For example, there may be a background thread that is spinning along in a method like this: while (_request.WaitOne()) { try { _workItem.Invoke(); } finally { OnWorkCompleted(); } } I see no obvious way to dispose of this thread without calling Thread.Abort (which from what I understand is discouraged). Calling Close on the _request object (an AutoResetEvent ), however, will throw an exception. Currently, the thread that is running this loop has its IsBackground property set to true , and so the application appears to close properly. However, since WaitHandle implements IDisposable , I'm unsure if this is considered kosher or if that object really ought to be disposed before the app exits. Is this a bad design? If not, how is this scenario typically dealt with?
Tags (comma-separated)
Save Edits
Cancel