كيفية إجراء مكالمة إلى خدمة WCF الخاصة بي بشكل غير متزامن؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

لدي خدمة WCF أتصل بها من خدمة Windows.

تقوم خدمة WCF بتشغيل حزمة SSIS، ويمكن أن تستغرق هذه الحزمة بعض الوقت حتى تكتمل ولا أريد أن تنتظر خدمة Windows الخاصة بي حتى تنتهي.

كيف يمكنني جعل خدمة WCF الخاصة بي تستدعي بشكل غير متزامن؟(أم أنها غير متزامنة بشكل افتراضي؟)

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

المحلول

سيتم تلبية جميع احتياجاتك في المقالات التالية من MSDN:

تنفيذ عملية خدمة غير متزامنة

استدعاء خدمة WCF غير متزامن

تصميم عقود الخدمات

نصائح أخرى

في البصرية ستوديو 2010، على مربع الاختيار Add Service Reference > click Advanced button > check the Generate Asynchronous Operations.

وبعد القيام بذلك، ستضاف عمليات التزامن وتكون متاحة للاستخدام الخاص.

جانب الخدمة:

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    bool DoWork(int i);
}

جانب العميل:

[ServiceContract(Name = nameof(IMyService))]
public interface IMyServiceClient : IMyService
{
    [OperationContract]
    Task<bool> DoWorkAsync(int i);
}

وكيل WCF داخل العميل الخاص بك (خدمة ويندوز؟) يحتاج إلى أن تكون محددة في خلق أنك ترغب في الحصول على عمليات غير متزامن المتاحة.

يمكنك تعديل الوكيل WCF القائمة عن طريق النقر على الحق في ذلك واختيار "تكوين خدمة المرجعي" من هنا كل ما تحتاجه للتحقق من مربع علامة بجوار "توليد عمليات متزامنة '

وطيب حتى هذا هو الجانب WCF وكيل الأشياء الاعتناء بها. الآن تحتاج إلى استخدام APM (غير المتزامن البرمجة النموذجي) مع وكيل داخل العميل الخاص بك.

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