-Oisin किसी भी भ्रम को स्पष्ट करने के लिए, System.Drawing ASP.NET और सेवाओं के अंतर्गत काम करता है, यह सिर्फ नहीं समर्थित है। उच्च भार (अप्रबंधित संसाधनों से बाहर चलना), स्मृति या संसाधन लीक (बुरी तरह कार्यान्वित या निपटान पैटर्न कहा जाता है) और/या संवाद दिखाने के लिए कोई डेस्कटॉप नहीं होने पर संवाद हो सकते हैं।
परीक्षण बाद वाले का ख्याल रखेगा, और निगरानी आपको पूर्व को सतर्क करेगी।लेकिन, अगर आपको कोई समस्या हो, तो पीएसएस को कॉल करने और फिक्स के लिए पूछने की उम्मीद न करें।
तो, आप क्या विकल्प हैं? खैर, अगर आपको पूरी तरह से समर्थित मार्ग की आवश्यकता नहीं है, और आपको अत्यधिक भार की उम्मीद नहीं है - बहुत से लोगों ने एमएसडीएन चेतावनी और सिस्टम का इस्तेमाल किया है। सफलता के साथ आगे बढ़ना। उनमें से कुछ को काट दिया गया है, लेकिन विफलता कहानियों की तुलना में बहुत अधिक सफलता है।
यदि आप कुछ समर्थित चाहते हैं, तो आपको यह जानना होगा कि आप अंतःक्रियात्मक रूप से चल रहे हैं या नहीं। व्यक्तिगत रूप से, मैं शायद इसे कहीं भी या अन्य गैर-इंटरैक्टिव ध्वज सेट करने के लिए होस्टिंग ऐप पर छोड़ दूंगा। आखिरकार, ऐप यह निर्धारित करने के लिए सबसे अच्छी स्थिति में है कि क्या वे एक होस्टेड वातावरण में हैं और/या जीडीआई + मुद्दों को जोखिम उठाना चाहते हैं।
लेकिन, यदि आप पूर्ण रूप से अपने अपने परिवेश का पता लगाने के लिए चाहते हैं, मैं वहाँ बदतर जवाब एक सेवा के लिए right here on SO पेशकश कर रहे हैं की तुलना में लगता है। सारांशित करने के लिए, आप या तो ServiceBase से विरासत में हैं या सिस्टम.कंसोल तक पहुंचने का प्रयास करने के लिए EntryAssembly देख सकते हैं। एएसपी.नेट के लिए, उसी लाइन के साथ, HttpContext.Current का पता लगाना पर्याप्त होना चाहिए।
मैं चाहते लगता वहाँ एक कामयाब रहे या पी/AppDomain बंद एक डेस्कटॉप देखने के लिए जिस तरह से (जो वास्तव में यह सब में परिभाषित करने कारक है, मुझे लगता है कि) और/या कुछ आह्वान जायें जो कि सुराग होगा आप अंदर हैं। लेकिन मुझे यकीन नहीं है कि यह क्या है, और एमएसडीएन इस पर प्रबुद्ध होने से कम है।
संपादित करें: MSDN Trolling, मैं ने कहा कि यह वास्तव में एक Window Station (जो एक डेस्कटॉप होस्ट करता है) महत्वपूर्ण बिट यहाँ है कि। उस जानकारी के साथ, मैं GetProcessWindowStation() ढूंढने में सक्षम था जो वर्तमान विंडो स्टेशन पर एक हैंडल देता है। GetUserObjectInformation() पर हैंडल को पास करने से आपको USEROBJECTFLAGS स्ट्रक्चर मिल जाएगा, यदि आपके पास एक दृश्यमान डेस्कटॉप है तो WSF_VISIBLE के साथ dwFlags होना चाहिए।
वैकल्पिक रूप से, EnumWindowsStations आपको उन स्टेशनों की एक सूची देगा जो आप जांच सकते हैं - WinSta0 इंटरैक्टिव है।
लेकिन, हाँ, मैं अभी भी सिर्फ अनुप्रयोग एक गुण सेट या कुछ ज्यादा आसान मार्ग है होने लगता है ....
संपादित फिर से: 7 साल बाद, मैं clued Environment.UserInteractive में मिल जहां एमएस does the exact GetProcessWindowStation dance मैंने आपके लिए ऊपर वर्णित किया है .... मैं अभी भी होस्टिंग ऐप को प्रतिनिधि देने की अनुशंसा करता हूं (वे तेज, लेकिन थोड़ा जोखिम भरा सिस्टम चाहते हैं। पथ खींचना), लेकिन UserInteractive इसे पिनवोक के बिना एक अच्छा डिफ़ॉल्ट लगता है तुम्हरे द्वारा।
आपको फ़ॉन्ट से संबंधित चीजों की जांच करने की आवश्यकता क्यों है? जैसा कि मैं समझता हूं कि विंडोज़ सेवाओं में यूआई नहीं है। कारण समझने में मदद करें। – shahkalpesh
विवरण में जाने के बिना, यह वर्ग लाइब्रेरी रिपोर्ट जेनरेट करती है, जिसे संभावित रूप से होस्ट प्रक्रिया द्वारा ई-मेल में भेजा जा सकता है। कार्यों में से एक को स्ट्रिंग की रेंडर चौड़ाई को मापने की आवश्यकता होती है। मुद्दा यह है कि यह अन्य कंप्यूटरों पर प्रदर्शित किया जा सकता है, न कि सर्वर पर। –
मुझे GDI + (System.Drawing) सुरक्षित उपयोग करने के लिए मिला है, जब तक कि आप सभी डिस्पोजेबल ऑब्जेक्ट्स का सही ढंग से निपटान करते हैं, सही त्रुटि हैंडलिंग करते हैं, और [सभी बग से बचें] (http://nathanaeljones.com/163/20 -image-आकार बदलने-नुकसान /)। 10K-60K वेबसाइटों के साथ चल रहा है [imageresizing।नेट लाइब्रेरी (जो डिफ़ॉल्ट रूप से, छवियों को गतिशील रूप से आकार देने के लिए जीडीआई + का उपयोग करती है)] (http://imageresizing.net), अभी तक सिस्टम से संबंधित एक स्थिरता समस्या नहीं है। उपयोग को रोकना। हालांकि, जब तक आप सिस्टम का उपयोग नहीं करते हैं। ठीक से ड्रॉइंग, आप * आसानी से * स्थिरता समस्याएं बना सकते हैं। –