You are updating a Windows desktop client application that was created by using Microsoft
.NET Framework 4 and Microsoft Visual Studio 2010. The application displays data derived
from several database queries. The display takes a long time to update. The application
currently uses a BackgroundWorker thread and a Parallel.ForEach statement on that
thread. Users have requested a modification to the program that would allow them to
interrupt the display of data and begin processing a new and different query. You decide to
provide a new Stop button on the user interface (UI) to allow the user to terminate the
current data display and initiate the new query. The main UI thread must be notified when
the current data processing is terminated so that the new query can be started. You need to
implement the Stop button event handler. What should you do?
A.
• Use the DoWork handler of the worker thread and test a shared status value. • Use a
break statement to terminate the Parallel.ForEach loop.
B.
• Use the DoWork handler of the worker thread and test a shared status value. • Use a
loopStatus.Stop() statement to terminate the Parallel.ForEach loop.
C.
• Use the DoWork handler of the worker thread and test a shared status value. • Use the
Thread.AbortQ statement to terminate the worker thread. • Start a new BackgroundWorker
thread from the main UI thread.
D.
• Use a CancelAsync() function to cancel the worker thread. • In the Parallel.ForEach
loop, test the CancellationPending property. • If the property is set to true, perform the
following tasks: Write a loopStatus.Stop() statement. Set the DoWorkEventArgs.Cancel
property to true. Use a return statement to exit from the loop.
Explanation: