2009-02-27 12 views
6

मैं सी # में WriteableBitmap से निपट रहा हूं। मैं वर्तमान में WriteableBitmap.BackBuffer के माध्यम से सीधे पिक्सल तक पहुंचने के लिए एक असुरक्षित कोड ब्लॉक का उपयोग कर रहा हूं। मैं /unsafe विकल्प पर निर्भर नहीं हूं, इसलिए, मैं इसके बजाय WriteableBitmap.WritePixels का उपयोग करने पर विचार कर रहा हूं।क्या कोई "प्रीप्रोसेसर" प्रतीक/असुरक्षित ध्वज से संबंधित है?

क्या "असुरक्षित" संस्करण में सशर्त रूप से संकलित करने का कोई तरीका है, जैसे कि जब मेरे प्रोजेक्ट फ़ाइल में मैन्युअल एकीकरण की आवश्यकता के बिना संकलन के लिए/असुरक्षित विकल्प का उपयोग किया जाता है, तो इसका उपयोग किया जा सकता है?

कम मैं की तर्ज पर कुछ के लिए देख रहा हूँ में: रनटाइम पर

#if UNSAFE 
    //my unsafe version 
#else 
    //the supposedly safe version goes here 
#endif 

जांच भी अच्छा है, लेकिन इसका मतलब है कि मुझे को/unsafe के साथ संकलित करने की आवश्यकता है, और इसका मतलब है कि लाइब्रेरी कोड को प्रोजेक्ट फ़ाइल अपडेट की आवश्यकता होगी, जो कम आसान है।

असल में, मैं इसके लिए महत्वपूर्ण संस्करण रखना चाहता हूं, लेकिन एक उचित संस्करण है जो कि इससे कोई फर्क नहीं पड़ता।

उत्तर

4

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

आप कॉन्फ़िगरेशन असुरक्षित असेंबली के आउटपुट नाम को भी बदल सकते हैं ताकि आपके पास दो असेंबली हों, Bitmaps.dll और Bitmaps.Unsafe.dll कहें, और असेंबली का ग्राहक यह तय कर सकता है कि इसकी ज़रूरतों को किस प्रकार फिट किया जा सकता है यह निर्दिष्ट करता है कि यह कौन सा असेंबली संदर्भित करता है।

+0

यह (कॉन्फ़िगरेटर के सुझाव की तरह) वास्तव में काफी काम करता है, धन्यवाद! –

1

मैं सुझाव दूंगा कि आप /unsafe /define:SAFE के साथ संकलित करें। शायद एक और तरीका है जिसके बारे में मुझे पता नहीं है।

0

मुझे लगता है कि आप तो फिर तुम जैसे आप अपने उदाहरण में दिया कोड का उपयोग कर सकते इस कोड

#define UNSAFE 
#undef UNSAFE // comment this line out if you want to compile the save version 

कोशिश कर सकते हैं।

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