मैंने हाल ही में WPF में प्रोग्रामिंग शुरू कर दी है और निम्न समस्या में टक्कर लगी है। मुझे समझ में नहीं आता कि Dispatcher.Invoke()
विधि का उपयोग कैसे करें। मैं सूत्रण में अनुभव है और मैं कुछ सरल विंडोज फॉर्म्स कार्यक्रमों जहां मैं सिर्फDispatcher का उपयोग कर गैर-मुख्य धागे से WPF नियंत्रण बदलें। इन्वोक
Control.CheckForIllegalCrossThreadCalls = false;
इस्तेमाल किया हाँ मुझे पता है कि बहुत लंगड़ा लेकिन इन सरल निगरानी अनुप्रयोगों थे बना दिया है।
तथ्य यह है कि अब मैं एक WPF एप्लिकेशन बना रहा हूं जो पृष्ठभूमि में डेटा पुनर्प्राप्त करता है, मैं डेटा को पुनर्प्राप्त करने के लिए कॉल करने के लिए एक नया धागा शुरू करता हूं (वेबसर्वर से), अब मैं इसे अपने डब्ल्यूपीएफ पर प्रदर्शित करना चाहता हूं प्रपत्र। बात यह है कि, मैं इस धागे से कोई नियंत्रण नहीं लगा सकता। एक लेबल या कुछ भी नहीं। इसे कैसे हल किया जा सकता है?
उत्तर टिप्पणियां:
@Jalfp:
तो मैं 'नए चलने' में इस डिस्पैचर विधि का उपयोग करें जब मैं डेटा प्राप्त? या क्या मुझे पृष्ठभूमि कार्यकर्ता डेटा को पुनर्प्राप्त करना चाहिए, इसे एक फ़ील्ड में रखना चाहिए और एक नया धागा शुरू करना चाहिए जो इस फ़ील्ड भरने तक प्रतीक्षा करता है और प्रेषक को नियंत्रण में पुनर्प्राप्त डेटा दिखाने के लिए कॉल करता है?
आप 'नए कार्रवाई (' भाग से छुटकारा पा सकते हैं, और बस एक लैम्ब्डा अभिव्यक्ति का उपयोग: 50 – jrista
हाँ नहीं जानते DispatcherPriority.Background,() => this.progressBar.Value = कारण है कि मैं एक डाल यहां क्रिया: पी – japf
तो जब मैं डेटा प्राप्त करता हूं तो क्या मैं इस डिस्पैचर विधि को 'नया ट्रेड' में उपयोग करता हूं? या क्या मुझे पृष्ठभूमि कार्यकर्ता डेटा को पुनर्प्राप्त करना चाहिए, इसे एक फ़ील्ड में रखना चाहिए और एक नया थ्रेड शुरू करना चाहिए जो इस फ़ील्ड तक प्रतीक्षा करता है पुनर्प्राप्त डेटा को नियंत्रण में दिखाने के लिए प्रेषक को भर दिया और कॉल किया? –