दिलचस्प पोस्ट
क्या कोई रनटाइम-निर्धारित नाम के साथ एक समारोह बनाने के लिए कोई गैर-eval तरीका है? ViewController का जवाब TOSelector: संदेश को deallocated उदाहरण (CRASH) को भेजा गया सी # में एक निर्देशिका की पूरी सामग्री की प्रतिलिपि बनाएँ कन्वर्ट यूटीसी समयक्षेत्र या तारीख को ऑफसेट XML पार्सिंग के लिए सर्वश्रेष्ठ नोड मॉड्यूल स्काला संदर्भ और दृश्य सीमा क्या हैं? स्थिर मैक ओएस एक्ससी निर्माण का निर्माण मैं jquery का उपयोग कर पृष्ठ पर एक विशिष्ट स्थान पर कैसे स्क्रॉल कर सकता हूं? कॉलम में पंक्तियों को एक सेल में एक्सेल में कैसे मर्ज करना है? CSS3 – 3D फ्लिप एनीमेशन – आईई 10 ट्रांसफॉर्म-मूल: संरक्षित -3 डी समाधान जावास्क्रिप्ट समारोह scoping और उत्थापन 1-5 से 1-7 तक यादृच्छिक सीमा का विस्तार करें HTML <input type = 'file'> एक फिल्टर लागू करें क्रिस्टल रिपोर्ट्स के लिए SQL सर्वर रिपोर्टिंग सेवा की तुलना करें आवेदनविशेषतया बनाम बनाम एप्लिकेशनडिडबैकअक्टिव, एप्लिकेशनवालेरेसाइनएक्टिव बनाम एप्लिकेशनडेडएन्टरबैकग्राउंड

डिस्पैचर। वर्तमान डिस्पैचर बनाम एप्लिकेशन। वर्तमान। डिस्पैचर

Dispatcher.CurrentDispatcher ( System.Windows.Threading . System.Windows.Threading ) और Application.Current.Dispatcher बीच अंतर क्या हैं। System.Windows.Threading ( System.Windows )?

मेरा आंत मुझे बताता है कि Application.Current.Dispatcher । वर्तमान। Dispatcher.CurrentDispatcher कभी भी नहीं बदलेगा और वर्तमान आवेदन में सभी थ्रेड्स के लिए वैश्विक होगा, जबकि Dispatcher.CurrentDispatcher । वर्तमान Dispatcher.CurrentDispatcher उस धागे के आधार पर Dispatcher का नया उदाहरण बना सकता है जिससे इसे बुलाया गया था।

क्या वो सही है?

यदि ऐसा है, तो Dispatcher.CurrentDispatcher का उद्देश्य है। मुख्यतः बहु-थ्रेडेड UI के लिए मुख्य Dispatcher.CurrentDispatcher ?

वेब के समाधान से एकत्रित समाधान "डिस्पैचर। वर्तमान डिस्पैचर बनाम एप्लिकेशन। वर्तमान। डिस्पैचर"

मेरा आंत मुझे बताता है कि आवेदन। वर्तमान। डिस्पैचर कभी भी नहीं बदलेगा और वर्तमान आवेदन में सभी थ्रेड्स के लिए वैश्विक होगा, जबकि डिस्पैचर। वर्तमान डिस्पैचर उस धागे के आधार पर डिस्पैचर का नया उदाहरण बना सकता है जिससे इसे बुलाया गया था।

वह सही है।

इसके अतिरिक्त, Dispatcher.CurrentDispatcher तक पहुंचने में कोई बात नहीं है। गैर-यूआई थ्रेड से वर्तमान डिस्पार्चर। यह तब तक कुछ भी नहीं करेगा जब तक आप Dispatcher.Run नहीं कॉल करते हैं। Dispatcher.Run , और एक असीम संदेश लूप में जा रहा है कि आप वर्क थ्रेड के अंदर से क्या करना चाहते हैं।

इसलिए:

  • सबसे सामान्य परिदृश्य में , जहां आपके ऐप में केवल एक यूआई धागा होता है, Application.Current.Dispatcher Dispatcher.CurrentDispatcher और Dispatcher.CurrentDispatcher । यूआरआइ थ्रेड के भीतर से वर्तमान डिस्पाचचर उसी उदाहरण को वापस करेगा। जो आप उपयोग करते हैं वह वरीयता की बात है

  • यदि आपके ऐप में एक से अधिक यूआई थ्रेड है तो प्रत्येक DispatcherObject स्थायी रूप से यूआई धागे के DispatcherObject से जुड़ा हो जाएगा जो इसे निर्माण पर बनाया गया था। इस मामले में, Application.Current.Dispatcher आपके आवेदन के साथ पैदा हुए धागा के डिस्पैबर को संदर्भित करेगा; आप अपने अन्य यूआई थ्रेड्स के स्वामित्व वाले नियंत्रण में संदेश पोस्ट करने के लिए इसका उपयोग करने में सक्षम नहीं होंगे।

अगर सरल शब्द में कहा जाए तो…

Dispatcher.CurrentDispatcher वर्तमान धागा के लिए प्रेषक हो जाता है। इसलिए, अगर आप एक पृष्ठभूमि प्रक्रिया से UI थ्रेड के डिस्पैचर की तलाश कर रहे हैं, तो इसका उपयोग न करें।

Application.Current.Dispatcher डिस्पैचर हमेशा आपको यूआई धागे के डिस्पैचर देगा, क्योंकि ये एक धागा है जो एकमात्र आवेदन उदाहरण को छूता है।

मेरा आंत मुझे बताता है कि आवेदन। वर्तमान। डिस्पैचर कभी भी नहीं बदलेगा और वर्तमान आवेदन में सभी थ्रेड्स के लिए वैश्विक होगा, जबकि डिस्पैचर। वर्तमान डिस्पैचर उस धागे के आधार पर डिस्पैचर का नया उदाहरण बना सकता है जिससे इसे बुलाया गया था।

यह सही है, अनुप्रयोग। वर्तमान। डिस्पाचर एक मौजूदा आवृत्ति के प्रेषक होने के लिए निर्माण पर सौंपा गया है जो आवेदन की एक आवृत्ति संपत्ति है। और Dispatcher.CurrentDispatcher के दस्तावेज के रूप में। वर्तमान Dispatcher.CurrentDispatcher बताते हैं:

धागे के वर्तमान में चलने वाले डिस्पैचर को प्राप्त करता है और यदि कोई पहले से थ्रेड से जुड़ा नहीं है तो एक नया डिस्पैचर बनाता है।


यदि ऐसा है, तो डिस्पैचर का उद्देश्य है। मुख्यतः बहु-थ्रेडेड UI के लिए मुख्य डिस्पैचर?

संभवतः, मुझे किसी पृष्ठभूमि थ्रेड के प्रेषक को प्राप्त करने में कोई फायदा नहीं हुआ है क्योंकि आपके पास आमतौर पर उनके पास कोई UI-elments नहीं है जिसके लिए आप ऑपरेशन भेजना चाहते हैं।