मुझे अपने .NET4 ऐप से Office दस्तावेज़ (Word & एक्सेल) स्वचालित करने की आवश्यकता है।सी # .Net4: उचित रूप से निपटान (गतिशील) COM ऑब्जेक्ट्स
चूंकि मैं वास्तव में अपने उपयोगकर्ताओं को एक विशिष्ट कार्यालय संस्करण का उपयोग करने के लिए मजबूर नहीं कर सकता हूं, इसलिए मैं इंटरऑप असेंबली या tlbimp का उपयोग नहीं करता हूं, इसलिए मेरे प्रोजेक्ट में कोई अतिरिक्त संदर्भ नहीं है और न ही संपूर्ण ऐप विफल हो जाएगा यदि कार्यालय स्थापित नहीं है (सुविधा बस उपलब्ध नहीं होगी)।
dynamic app = Activator.CreateInstance(Type.GetTypeFromProgID("Word.Application"));
app.Foo();
मैं चिंतित जब मैं कैसे ठीक "एप्लिकेशन" वस्तु के निपटान के लिए कर रहा हूँ:
इसके बजाय मैं प्रणाली है जो COM सर्वर "Word.Application" या "Excel.Application" संभाल कर सकते हैं पूछना मैंने इसके साथ किया, क्योंकि अब मेरे पास चिंता करने के लिए दो आंतरिक प्रबंधन प्रणालियां हैं (COM संदर्भ गिनती और .NET संदर्भ ट्रैकिंग)। आदर्श रूप में मैं गतिशील ऐप ऑब्जेक्ट को एक डिस्पोजेबल रैपर क्लास में लपेटने में सक्षम होना चाहिए और यह सुनिश्चित करने के लिए कि आवरणकारी COM ऑब्जेक्ट को संदर्भित किया जाता है जब रैपर का निपटारा किया जाता है।
संपादित करें: मैं यह भी जानना चाहता हूं कि जब मैं इसके साथ काम कर रहा हूं, तो COM ऑब्जेक्ट को "लाइव" पर ठीक से कैसे बनाना है, क्योंकि Word एक अलग प्रक्रिया में है। मुझे वर्ड ऐप को तुरंत चालू करने, इसे स्वचालित करने और फिर मेरे सभी संदर्भों को मुक्त करने में सक्षम होना चाहिए, लेकिन वर्ड ऐप को खुला रहना चाहिए।
संभव डुप्लिकेट: http://stackoverflow.com/questions/2203968/how-to-access-microsoft-word-existing-instance-using-late-binding –
ज़रूरी नहीं है, डुप्लिकेट उम्मीदवार अधिक है सी # से COM के तत्काल पक्ष के बारे में, यह सवाल निपटान के बारे में है। –
सुनिश्चित करें कि आप किसी भी मध्यस्थ COM ऑब्जेक्ट्स का भी निपटान करते हैं - http://stackoverflow.com/a/158752/188926 – Dunc