private void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; // Loop while (true) { //CancellationPending 속성이 true로 set되었다면(위에서 CancelAsync 메소드 호출 시 true로 set된다고 하였죠? if ((worker.CancellationPending == true)) { //루프를 break한다.(즉 스레드 run 핸들러를 벗어나겠죠) e.Cancel = true; break; } else { //메시지 수신 MqRecvVo mrvo = RabbitConsumer.getRevcMessages(); if (mrvo != null) { logger.Debug("bw_DoWork req_typ : " + mrvo.req_typ); worker.ReportProgress(0, mrvo); } System.Threading.Thread.Sleep(500); } } }