2008-09-25 9 views
5

मैं कुछ कोड बुला रहा हूं जो .NET से बिटमैपडेटा क्लास का उपयोग करता है। मैंने कुछ मारा है जहां मुझे गुगलस्पेस पर एक निश्चित उत्तर नहीं मिल रहा है।अनलॉकबिट्स, लॉकबिट्स, और कोशिश-अंत में

क्योंकि ऐसा लगता है कि LockBits और UnlockBits हमेशा एक जोड़ी में बुलाया जाना चाहिए, मैं इस का उपयोग कर रहा:

  System.Drawing.Imaging.BitmapData tempImageData = tempImage.LockBits(
      new System.Drawing.Rectangle(0, 0, tempImage.Width, tempImage.Height), 
      System.Drawing.Imaging.ImageLockMode.ReadOnly, tempImage.PixelFormat); 
     try 
     { 
      //use external library on the data 
     }//Exception not handled here; throw to calling method 
     finally 
     { 
      tempImage.UnlockBits(tempImageData); 
     } 

(मैं हाल ही में उपयोग बयान है, जो में बहुत उपयोगी है के साथ प्रयोग करना किया गया है सी #, जिसने मुझे यह विचार दिया कि मुझे यह करना चाहिए।) समस्या है, यहां तक ​​कि एमएस के स्वयं के दस्तावेज़ीकरण (http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.unlockbits.aspx) इसे अंतिम-अंतराल पैटर्न का उपयोग करने के लिए उपयुक्त नहीं लगता है।

क्या अंततः आवश्यक या अनावश्यक है?

अपडेट: मैं अपवाद को पकड़ने और फिर से उखाड़ फेंक सकता हूं, क्योंकि मुझे नहीं पता कि यह क्या हो सकता है और उन्हें पहले पकड़ नहीं रहा था।

धन्यवाद!

उत्तर

7

प्रयास-अंत पैटर्न सही है। चूंकि यह बाहरी कोड है, आप पर कोई अपवाद नहीं है कि अपवादों को फेंक दिया गया है, और अनलॉक बिट्स क्लीनअप कोड को किस त्रुटि के बावजूद निष्पादित किया जाना चाहिए।

0

क्या आप किसी तरह के अपवाद को फेंकने की उम्मीद कर रहे हैं? यदि आप हैं, तो क्या आप इसे पकड़ सकते हैं? यदि नहीं, तो मुझे कोशिश/आखिरकार बिंदु नहीं दिख रहा है।

अपवादों पर भी विभिन्न दर्शन हैं। व्यक्तिगत रूप से, मैं उनके बारे में 'असाधारण' होने के बारे में सोचता हूं - जैसे आपकी आखिरी फाइल लिखने पर बिजली निकलती है, इसलिए आपकी धारावाहिक फ़ाइल अपेक्षा से कम है। मुझे यकीन नहीं है कि जब आप इस तरह की बिट्स में हेरफेर करते हैं तो किस तरह की असाधारण स्थिति हो सकती है। यदि आप सरणी के अंत से बाहर निकलते हैं, तो यह असाधारण नहीं है, इसका मतलब है कि आपको अपनी सीमाओं की जांच को कसने की आवश्यकता है।

+0

यहां एक अच्छा बिंदु है। कोड हमारा नहीं है; यह एक स्वामित्व पुस्तकालय से संबंधित है जिसका हम साथ काम करते हैं। – Chris

1

भले ही आप अपवाद को पकड़ लें, अंततः इसका मतलब है कि आप अनलॉकबिट कॉल को डुप्लिकेट नहीं करते हैं, जो मेरे विकल्प में प्लस है।

संबंधित मुद्दे