यदि कोई Dispatcher
निलंबित कर दिया गया है तो संदेश बॉक्स दिखाने का प्रयास करता है तो एक अपवाद उठाया जाता है (Dispatcher.DisableProcessing()
कहा जाता है)।डिस्पैचर। डिसेबल प्रोसेसिंग सक्रिय होने पर मैं कैसे पता लगा सकता हूं?
अमान्य ऑपरेशन अपवाद: 'डिस्पैचर प्रोसेसिंग निलंबित कर दिया गया है' (here देखें)।
किसी को भी पता है जहां Dispatcher
या निलंबित नहीं किया गया है मैं कैसे पता लगा सकते हैं (ताकि मैं जानता हूँ कि जब BeginInvoke()
कॉल करने के लिए)?
संपादित करें 1:
मैं एक संदेशबॉक्स दिखाने के लिए कोशिश कर रहा हूँ Application.DispatcherUnhandledException घटना की प्रतिक्रिया में। हालांकि, अगर इस अनचाहे अपवाद को डेटाबाइंडिंग (यानी ItemsControl.ItemsSource
) के दौरान फेंक दिया गया था तो Dispatcher
निलंबित कर दिया गया है। MessageBox
दिखाने का प्रयास करने में विफल रहता है। हमेशा Dispatcher.BeginInvoke()
का उपयोग समस्या हल करता है, लेकिन मैं इसे तब तक नहीं करना चाहता जब तक कि वास्तव में आवश्यक न हो।
संपादित करें 2:
यह इस तरह काम करता है पूरा करने के लिए प्रतिबिंब का उपयोग करना:
var dispatcherType = typeof(Dispatcher);
var countField = dispatcherType.GetField("_disableProcessingCount", BindingFlags.Instance | BindingFlags.NonPublic);
var count = (int)countField.GetValue(Dispatcher.CurrentDispatcher);
var suspended = count > 0;
मेरा सुझाव है आप यहां और विवरण प्रदान करते हैं इस प्रकार प्रश्न में जगह पूरा कर रही है। –