سؤال

لدي حاليا خدمة WCF تستخدم DLL COM لخدمتها. يتم تحميل كائن COM فقط مرة واحدة وحفظها عبر Singleton. المشكلة هي التشغيل الأول يستغرق حوالي 1 دقيقة لتحميل كائن COM. يتم استضافة خدمة WCF عبر خدمة Windows. أتساءل كيف يمكنني تحميل كائن COM Singleton عبر بدء تشغيل خدمة Windows.

protected override void OnStart(string[] args)
{
    if (host != null)
    {
        host.Close();
    }

    Type serviceType = typeof(MyService);
    host = new ServiceHost(serviceType);
    host.Open();

    objectConn.getInstance()
}

عندما أحاول إضافة تحميل Singleton في OnStart من بدء تشغيل خدمة Windows، فهو دائما فشل. أود أن أسأل ما إذا كان هذا أنا الطريقة المناسبة لإضافة روتين بدء التشغيل مثيل ObjectConn. حاولت وضع Singleton Loading في Conditutor MyService ولكنها تم استدعاؤها فقط مع الاتصال الأول لتشغيل / طريقة خدمة الويب التي استدعاءها مما يجعل دعوة الخدمة الأولى محرجة.

قرأت عن التبعية ولكن أعتقد أن السلوك الإضافي غير قابل للتطبيق لأنني أريد فقط تحميل مصدر كائن COM مرة واحدة.

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

المحلول

ربما يمكنك القيام بذلك - لكنني أود أن أوصي بذلك قبل

host.Open()

يتصل. تدور هذه الدعوة في وقت تشغيل WCF بأكملها وكل شيء، وأود أن أفعل كل مهام التهيئة قبل ذلك، إذا كان ذلك ممكنا.

مارك

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