स्टॉप द्वारा आप वास्तव में बंद करना चाहते हैं या क्या आपका मतलब रोकना है? यदि आपका मतलब बंद है, तो यह केक का एक टुकड़ा है। उस बटन के लिए बटन बटन इवेंट हैंडलर बनाएं जिसे आप पृष्ठभूमि कार्यकर्ता शुरू करने के लिए ज़िम्मेदार होना चाहते हैं और बटन को इवेंट हैंडलर को रोकने के लिए ज़िम्मेदार व्यक्ति के लिए क्लिक करें। अपने स्टार्ट बटन पर, पृष्ठभूमि कार्यकर्ता विधि पर कॉल करें जो do_work ईवेंट को सक्रिय करता है। कुछ इस तरह:
private void cancelAsyncButton_Click(System.Object sender,
System.EventArgs e)
{
// Cancel the asynchronous operation.
this.backgroundWorker1.CancelAsync();
}
अब मत भूलना के लिए जाँच करने के लिए: अपने स्टॉप बटन पर
private void startButton_Click(System.Object sender,
System.EventArgs e)
{
// Start the asynchronous operation.
backgroundWorker1.RunWorkerAsync();
}
, विधि सेट कि पृष्ठभूमि कार्यकर्ता CancellationPending
सच करने के लिए, इस तरह के एक फोन करना CancelationPending
आपके पृष्ठभूमि कार्यकर्ता के doWork के अंदर ध्वज। कुछ इस तरह:
private void KillZombies(BackgroundWorker worker, DoWorkEventArgs e)
{
while (true)
{
if (worker.CancellationPending)
{
e.Cancel = true;
}
}
}
और अपने doWork विधि:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
KillZombies(worker, e);
}
मुझे आशा है कि यह सही दिशा में ले जा सकते हैं। कुछ आगे रीडिंग:
http://msdn.microsoft.com/en-us/library/b2zk6580(v=VS.90).aspx
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx
http://msdn.microsoft.com/en-us/library/waw3xexc.aspx
हम्म, जवाब में स्वीकार कर लिया, सावधान रहना के लिए - आप एक प्रभाव है कि केवल यह कारण एक यात्रा को रोकने के लिए नहीं होगा के बारे में सभी में चिंता कर रहे हैं या दो बाद में, लेकिन भूल गए कि आप एक पूरे प्रोसेसर बस कताई बनाने जा रहे हैं! कम से कम वहां सो जाओ। ऐसा लगता है कि यह काम कर रहा है लेकिन बड़ी हानि के लिए।कुछ अन्य उत्तरों उन सभी समस्याओं को हल करते हैं जिनसे आप उन्हें हल करने के लिए 'अनुमानित' हैं। – FastAl