में पृष्ठभूमि कार्यकर्ता के साथ मुख्य ऐप के लिए एक संदेशबॉक्स को रोकना एक WPF ऐप में, मैं समय-समय पर सर्वर पर एक शर्त की जांच करने के लिए पृष्ठभूमिवर्कर का उपयोग कर रहा हूं। हालांकि यह ठीक काम करता है, मैं चेकबॉक्स के दौरान कुछ विफल होने पर उपयोगकर्ताओं को नोटिस करने के लिए एक संदेश बॉक्स पॉप करना चाहता हूं।WPF
यहाँ मैं क्या है:
public static void StartWorker()
{
worker = new BackgroundWorker();
worker.DoWork += DoSomeWork;
worker.RunWorkerAsync();
}
private static void DoSomeWork(object sender, DoWorkEventArgs e)
{
while (!worker.CancellationPending)
{
Thread.Sleep(5000);
var isOkay = CheckCondition();
if(!isOkay)
MessageBox.Show("I should block the main window");
}
}
लेकिन इस MessageBox मुख्य विंडो ब्लॉक नहीं करता। मैं अभी भी अपने डब्ल्यूपीएफ ऐप पर क्लिक कर सकता हूं और मैसेजबॉक्स के साथ मुझे जो भी पसंद है उसे बदल सकता हूं।
मैं इसे कैसे हल करूं? धन्यवाद,
संपादित करें:
public static void StartWorker()
{
worker = new BackgroundWorker();
worker.DoWork += DoSomeWork;
worker.ProgressChanged += ShowWarning;
worker.RunWorkerAsync();
}
private static void DoSomeWork(object sender, DoWorkEventArgs e)
{
while (!worker.CancellationPending)
{
Thread.Sleep(5000);
var isOkay = CheckCondition();
if(!isOkay)
worker.ReportProgress(1);
}
}
private static void ShowWarning(object sender, ProgressChangedEventArgs e)
{
MessageBox.Show("I block the main window");
}
धन्यवाद, मुझे लगता है कि इस सूत्र से संबंधित है के लिए किया था, लेकिन मैं पता नहीं है कि यह कैसे हल करना है। "ReportProgess" या "RunWorkerCompleted" का उपयोग करना सहज नहीं था, लेकिन स्पष्टीकरण पढ़ने से बहुत अधिक इंद्रियां होती हैं। –