I am creating a quick’n’dirty utility that will enable editing of data read sequentially from a set of files. Here’s a very simplified explanation of what will happen in a single iteration of a loop:
- Read a line from the input stream
- Parse it and use the parsed results to populate form controls
- Allow user editing and await a confirmation button click
- Retrieve the updated form control values and write to the output stream
What I can’t figure out is how to integrate the processing loop with the event-driven UI. For example, how do I suspend operation of the loop while waiting for user input.
I understand that this is possible by launching the loop operation on its own thread and writing code to manage its interaction with the UI thread, but I am wondering if there is a simpler approach that works out of the box.
Thanks for any ideas you may be able to offer.
Tim
I can think of 2 approaches to do that:
The easiest is probably to use a modal dialog: when your worker thread needs input from the user, display a dialog, which is a blocking operation. Something like that:
The other option, if you don’t want to use a modal dialog, is to use a wait handle to synchronize the worker thread and the UI:
private readonly AutoResetWaitHandle _userInputWaitHandle = new AutoResetWaitHandle(false);