सब, WinForm में एकाधिक थ्रेड केस को संभालने के लिए मुझे पहले से ही BackgroundWorker
का मूल उपयोग पता था। और कोड संरचना नीचे की तरह दिखती है।BackgroundWorker ईवेंट का उपयोग कैसे करें RunWorkerCompleted
आवेदन के मुख्य धागे में। बस पृष्ठभूमि वर्क शुरू करें।
if (backgroundWorker1.IsBusy != true)
{
// Start the asynchronous operation.
backgroundWorker1.RunWorkerAsync();
}
तो यह DoWork
घटना निकाल देते थे। तो हम वहां कुछ कर सकते हैं।
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
......
// report progress.
worker.ReportProgress(iProgress);
....
}
फिर हम सिर्फ BackgroundWorker प्रगति दिखाने के लिए ProgressChanged
घटना को संभालने के लिए की जरूरत है।
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//show progress.
resultLabel.Text = (e.ProgressPercentage.ToString() + "%");
}
DoWork
समाप्त होने के बाद या कुछ अपवाद हुआ। घटना RunWorkerCompleted
निकाल दिया जाएगा।
यहां इन घटनाओं के संचालन के लिए मेरे प्रश्न आते हैं। कृपया उनकी समीक्षा करने में मदद करें। धन्यवाद।
मैंने देखा कि RunWorkerCompletedEventArgs e
में 'परिणाम' नाम की संपत्ति है, इसका उपयोग क्या होता है? मुझे इसे कैसे प्रयोग में लाना है ?
क्या e.error
के बजाय मेरा कस्टम अपवाद संदेश प्राप्त करने की कोई संभावना है? यदि वहाँ है, तो इसे कैसे बनाया जाए?
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled == true)
{
resultLabel.Text = "Canceled!";
}
else if (e.Error != null)
{
resultLabel.Text = "Error: " + e.Error.Message;
}
else
{
resultLabel.Text = e.Result.ToString();
}
}
के बारे में क्या 'Error' का उपयोग करें? ओपी ने यही पूछा। –
अद्यतन उत्तर। धन्यवाद। (फोन पर पढ़ना और इसे याद किया) – SimonGoldstone