मेरे पास निम्न कोड के साथ समस्या है
नामस्थान MyApp {सार्वजनिक आंशिक श्रेणी PhotoWindow: Window {निजी कब्जा _capture; सार्वजनिक फोटोविंडो () {InitializeComponent (); _capture = नया कैप्चर (); अगर (_capture! = Null) {// & lt; छवि & gt; एक्सएएमएल कैप्चरसोर्स। विथ = 150 में; CaptureSource.Height = 180; _capture.ImageGrabbed + = ProcessFrame; _capture.Start (); } सक्रिय = = (एस, ई) = & gt; _capture.Start (); समापन + = (एस, ई) = & gt; {If (_capture == नल) वापसी; _capture.Stop (); _capture.Dispose (); }; } निजी शून्य प्रोसेसफ्रेम (ऑब्जेक्ट प्रेषक, इवेंटएआरजीएस ई) {try {Image & lt; Bgr, Byte & gt; फ्रेम = _capture.RetrieveBgrFrame (); CaptureSource.Source = हेल्पर। TobitmapSource (फ्रेम); } पकड़ (अपवाद अपवाद) {System.Windows.MessageBox.Show (exception.ToString ()); }}}} जब मैं अनुप्रयोग चलाता हूं मुझे अपवाद मिलता है System.InvalidOperationException: यह कॉल इस ऑब्जेक्ट तक नहीं पहुंच सकता है क्योंकि मालिक एक और धागा है लाइन पर CaptureSource.Source = Helper.ToBitmapSource (फ्रेम); के रूप में मैं इसे हल कर सकते हैं? < पी> ऐसा लगता है कि ImageGrabbed घटना कैद की पृष्ठभूमि धागा से उठाया गया है और इस कारण कि आपके हैंडलर उस धागे में चल रहा है, न कि आपके विंडो के UI थ्रेड ।
आप नियंत्रण के UI थ्रेड में कोड को लागू करने के लिए डिस्पैचर का उपयोग कर सकते हैं।
CaptureSource.Dispatcher.Invoke ((=) = & gt; {छवि & lt; बीजीआर, बाइट & gt; फ्रेम = _capture.RetrieveBgrFrame (); CaptureSource.Source = हेल्पर। ToBitmapSource (फ्रेम);});
Comments
Post a Comment