Saturday 15 June 2013

c# - Windows Phone 8 Unit Test creating a bitmapimage -


मेरे पास एक विधि है जो BitmapImage लेता है।

मैं इसे BitmapImage को बनाकर या लोड करके परीक्षण करने का प्रयास कर रहा हूं और फिर इसे विधि कहा गया है।

हालांकि, इकाई परीक्षण मुझे बनाने एक bitmapimage की अनुमति नहीं देता है, यह एक InvalidCrossThreadException

क्या कोई भी दस्तावेज़ीकरण या संसाधन है जो कि बिटमैप इमेज में विंडोज फोन 8 लेते हैं।

हम विजुअल स्टूडियो 2012 - अपडेट 2 का उपयोग कर रहे हैं।

बिटमैप इमेज केवल UI थ्रेड पर चला सकता है, और यूनिट टेस्ट पृष्ठभूमि थ्रेड से चल रहा है। यही कारण है कि आपको यह अपवाद मिल रहा है BitmapImage या अन्य यूआई घटक से युक्त किसी भी परीक्षण के लिए आपको इसकी आवश्यकता होगी:

  1. यूआई थैले को Dispatcher.BeginInvoke () का उपयोग करके पुश करें। < / Code>
  2. परीक्षण पूरा करने से पहले UI थ्रेड को समाप्त करने के लिए प्रतीक्षा करें।

    उदाहरण के लिए, ManualResetEvent (semaphore) का उपयोग करके क्रॉस-थ्रेड सिग्नल करना, और यह सुनिश्चित करने के लिए कि किसी भी (पकड़ने योग्य) अपवाद टेस्ट थ्रेड पर वापस पास किए गए हैं ...

      [TestMethod] सार्वजनिक शून्य TestMethod1 () {ManualResetEvent mre = new ManualResetEvent (असत्य); अपवाद uiThreadException = नल; Deployment.Current.Dispatcher.BeginInvoke (() = & gt; {{bitmapImage bi = new bitmapImage (); // अधिक सामान // यूआई थ्रेड में एक अपवाद अनुकरण करते हैं // नए अवैधऑपरेशन अपवाद ("हा!") फेंकें; } पकड़ (अपवाद ई) {uiThreadException = ई;} // पूरा संकेत के रूप में संकेत.सेट ();}); // बाउल पूरा करने के लिए यूआई थ्रेड पर ऑपरेशन के लिए अधिकतम 1 सेकंड प्रतीक्षा करें = mre.WaitOne (1000); यदि (! पूरा) {नया अपवाद फेंक ("UI थ्रेड समय में पूरा नहीं हुआ"); } // यूआई थ्रेड से अपवाद को फिर से हटाएं यदि (ui टाईब्रेक अपवाद! = नल) {फेंक यूटीथ्रेडएक्सेप्शन; }}    

No comments:

Post a Comment