मेरे पास एक भूगर्भ मानचित्र वाला एक प्रोग्राम है जिसमें एम्बेडेड है। नक्शा के लिए इवेंट हैंडलिंग नक्शा को उत्तरदायी रखने के लिए एक अलग धागे पर संभाला जाता है (उदाहरण के लिए, मानचित्र पर क्लिक होने पर आग लगने वाली घटनाएं)।सी #, डब्ल्यूपीएफ, स्वचालित रूप से डिस्पैचर को कॉल करें। आवश्यकता होने पर इन्वोक करें?
समस्या यह है कि जब मैप एक घटना को चलाता है, तो मेरे प्रोग्राम को इसकी चीजों में कुछ चीजों को अपडेट करने की आवश्यकता होती है, और मानचित्र पर चित्रों को संभालने के लिए मानचित्र में वापस कॉल करने की आवश्यकता होती है।
मैंने इस में पूरे ईवेंट हैंडलर विधि को लपेटने की कोशिश की। डिस्पैचर.इनवोक, जो मुझे मुख्य यूआई थ्रेड पर वापस रखता है। यह मेरे जीयूआई को अपडेट करने के लिए बहुत अच्छा काम करता है, लेकिन जब मैं मानचित्र में वापस कॉल करता हूं, तो भी मैं यूआई थ्रेड पर हूं जो मानचित्र में कुछ समस्याएं पैदा कर सकता है।
असल में, इस काम को करने के लिए, मुझे हर बार dispatcher.invoke चलाने की आवश्यकता होगी जब मैं अपने गुई पर नियंत्रण बदलना चाहता हूं। क्या dispatcher.invoke में प्रत्येक कॉल को लपेटने के बिना मैं इसे स्वचालित रूप से कर सकता हूं? मुझे उम्मीद है कि यह सब समझ में आता है।
यहाँ घटना के बारे में मैं बात कर रहा हूँ के लिए कुछ उदाहरण कोड ..
private void Map_OnMapClicked(object sender, MapClickedEventArgs e)
{
this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
{
// Do something to update my gui
}));
Map.DoSomethingInTheMap();
this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
{
// Do something to update my gui
}));
//etc etc etc
}