كيفية إعادة استخدام (دلفي) الخادم OLE مع العميل الثاني؟

StackOverflow https://stackoverflow.com/questions/495785

سؤال

وكتبت خادم أتمتة OLE (باستخدام دلفي). وعادة ما تبدأ خادم OLE يدويا واستخدامه بمثابة التطبيق العادي. من وقت لآخر أن أبدأ عميل، الذي الاتصال تلقائيا إلى ملقم OLE القائمة.

وعندما ينهي العميل، لم ينتهي الخادم (على الأقل عندما بدأ يدويا قبل العميل) لكنها لن تقبل أي اتصال OLE الآخرين. سوف تبدأ عميل آخر يؤدي إلى الخادم الجديد بدلا من إعادة استخدام أول واحد.

وكيف يمكنني إعادة استخدام نفس الخادم مع العميل الثاني؟

و(السؤال الأخير تم إعادة صياغتها بشكل صحيح. وفي النسخة الأصلية كنت طالبا كيفية منع الملقم من إنهاء، التي لم يكن صياغة جيدة)

هل كانت مفيدة؟

المحلول

ويوجد إعداد "التوضيح" في معالج كائن COM في دلفي. القيم المسموح بها هي "الداخلية"، "الابتدائية متعددة"، "مثيل مفرد".

وكنت أرغب في إعادة خادم COM نفسه مع عدة عملاء. هذا هو السبب في أنني اخترت "مثيل واحد" وعلى الرغم من أن كنت قد مثيل واحد من تطبيق خدمة بلدي لجميع العملاء. ولكنني كنت مخطئا. "مثيل واحد" يعني أنه لن يكون هناك مثيل واحد فقط من اتصال COM في خدمة بلدي. وأرجو أن يكون المختار "مثيل متعددة" للسماح للاتصال متعددة COM (ولكن واحدا تلو الآخر، وليس في وقت واحد) في نفس الخادم.

وأعتقد أن الكلمات المستخدمة في معالج كائن COM في دلفي ليست واضحة حقا. بدلا من "المثال متعددة"، "حالة واحدة"، وسيكون من الأفضل أن يكون "متعددة الاستخدامات" و "استخدام مرة واحدة" كما هو الحال في هذه <لأ href = "http://www.vbi.org/Items/article.asp؟ معرف = 34 "يختلط =" نوفولو noreferrer "> مقال عن خادم OLE وVB .

نصائح أخرى

في العميل، استخدام

وConnectKind := ckRunningOrNew

ووينبغي أن تستخدم ملقم موجود بدلا من البدء واحدة جديدة.

ويجب أن تكون قادرة على زيادة العداد مرجع ملقم أتمتة عند بدء تشغيل الخادم كتطبيق العادي. ما الذي تريد تحقيقه هو ذو شقين: دع الخادم لا ينتهي عند مخارج العميل، وأيضا السماح الخادم لا تنتهي عند إغلاق النموذج الرئيسي في حين أن العميل لا يزال قيد التشغيل

وإنشاء كائن COM كما سينغلتون. وأيضا للحفاظ على الكائن قيد التشغيل حتى بعد غروب العميل، وطرح عدد مرجع إضافية. للقيام بذلك دعوة QI مرة واحدة داخل كائن COM.

ملاحظة حول الوظيفة السابقة "يوجد إعداد" التوضيح "في معالج كائن COM في دلفي". : على الأقل في بناء C ++، يمكن ببساطة هذا الخيار أن تتغير <ط> بعد ذلك في إعدادات المشروع، البند "ATL". يظهر هذا البند فقط هناك لخادم-EXE أوله بعد إضافة الكائن الآلي الأول لذلك.

و(لقد طلبت أيضا مؤلف كتاب <لأ href = "http://www.techvanguards.com/com/tutorials/tips.htm#Understand٪20the٪20class٪20factory٪20Instancing٪20property" يختلط = "noreferrer نوفولو "> هذه الصفحة غرامة لذكر هذا في البند 18).

ويمكنك أيضا محاولة تغيير هوية المستخدم الذي يقوم بتشغيل ملقم OLE، إذا كان هو إكس وليس دلل، عن طريق تشغيل DCOMCNFG واختيار خدمات المكونات / الكمبيوتر / جهاز الكمبيوتر / DCOM التكوين واختيار الخادم الخاص بك.

قد يكون لديك للعب مع حولها، لا أستطيع أن أتذكر الاختلافات بين كل منهم ولكن أعتقد أن "مستخدم تفاعلي" ينبغي أن نفعل ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top