????3??BackgroundWorker???

????????????а?????BackgroundWorker????????????????????????????????????????????????????????

?????????????

????1???????????BackgroundWorker??????DoWork(??????)??ProgressChanged(???????) ??RunWorkCompleted(?????)?????

????2??????WorkerSupportsCancellation??WorkerReportsProgress?????true????????????????????????????棻

????3?????RunWorkerAsync() ???????????????IsBusy?????ж???????????????????У?

????4?????CancelAsync() ?????????????????????

????a???????????BackgroudWorker.CancellationPending?????????true??????????DoWork????в?????BackgroudWorker.CancellationPending??????DoWorkEventArgs??Cancel?????

????b??DoWork???????????е?????п????????????????????乤?????????????????????? true ??CancellationPending???????????????£?????????????????RunWorkerCompleted????????????RunWorkerCompletedEventArgs?? Cancelled ????????????? true??????????????????????????????????????????CancellationPending??????????ж??

????5???????DoWork???????????в??????κ???????????????????ProgressChanged??RunWorkerCompleted???????????????????

???????RunWorkerAsync()???????е?BeginInvoke()??????DoWork???????DoWork??????????????????????????????ProgressChanged??RunWorkerCompleted????????????????AsyncOperation?? Post() ?????????÷?????????“??????????”?С?

??????????????????????

????????????????BackgroundWorker?????????????????????????????????????????????????????????????????????????楨???????????????????????????????????????????????????????????????????????????

?????????????MSDN??????????????????????????????????????????л????

????????????????????????

????eg???ж?n????????

????1??1??0???????????????

????2????2??3????????????primes????n=5???????? n+=2 ???????????????

????3?????????primes?е??????????????n??????????????????????

????4???????????????????????3???“????????>n”???????ж?n????????????????????primes??

?????????????????

??????????????????????PrimeNumberCalculator??

????1???????????PrimeNumberCalculator??????ProgressChanged????????棩??CalculatePrimeCompleted??????????????

????2?????CalculatePrimeAsync(intnumberToTest?? object taskId)??????????????????????????????Guid taskId = Guid.NewGuid();???????????????????????CompletedEventArgs??ProgressChangedEventArgs??????UserState??????????????????????????????????????

????3?????????CancelAsync(object taskId)??????taskId?????AsyncOperation???????????????????????????ж?taskId??????????????ж???????????

???????????????????????????????????

????1?????????????????????AsyncOperationManager???AsyncOperation????????????????????????????????????ó??????????? ASP.NET?????????ó???? Windows ??????ó????????“??????????”???÷???????

????2??BackgroundWorker???????????ú????

????3???????ι??????????????????????????????????????????????

??????л?????????籾??????а?????????????????……