سؤال

وأنا أعمل على بعض التعليمات البرمجية OLE DB الذي يمتد استفسارات حول MS SQL Server عبر ICommand::Execute. أنا تحويل هذا الرمز للعمل بشكل غير متزامن بواسطة تعيين الخاصية DBPROPVAL_ASYNCH_INITIALIZE على الأمر قبل تنفيذ.

وكنت تفضل لتسجيل بالوعة IDBAsynchNotify بحيث يمكن أن يتم إعلامك قانون بلدي من الأحداث، بدلا من الاقتراع أو عرقلة عبر ISSAsynchStatus.

الوثائق للحصول على ICommand::Execute لا لا تظهر IConnectionPointContainer كمعلمة riid مقبولة، ولكن نفس الوثيقة، عند مناقشة قانون DB_S_ASYNCHRONOUS المقابل، تشير إلى أنه من الممكن أن تطلب واجهة IConnectionPointContainer أن أتمكن من استخدامها لأسجل مصدر الحدث.

عند أدعو ICommand::Execute، ويمر IID_IConnectionPointContainer كمعلمة riid، أتلقى الخطأ E_NOINTERFACE. كما أنني حاولت تعيين الخاصية DBPROP_IConnectionPointContainer قبل Execute لكني حصلت على نفس النتائج.

وإذا كان لدي ل، سوف تستخدم ISSAsynchStatus، ولكن يهمني كثيرا بدلا من استخدام IDBAsynchNotify. هل من الممكن؟

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

المحلول 2

ووفقا للاستجابة على <لأ href = "http://blogs.msdn.com/b/sqlnativeclient/archive/2010/01/16/sql-server-native-client-wants-to-hear-your -opinion.aspx "يختلط =" noreferrer نوفولو "> بلوق هذا العميل الأصلي SQL خادم آخر،" نموذج البرمجة الإعلام غير متزامن "كانت خامس أهم ميزة طلب للعميل الأصلي. انا اعتقد ان يجيب على السؤال. نأمل أن فريق sqlncli سيتناول هذا عاجلا وليس آجلا. أنا منزعج بسهولة عن طريق الاقتراع.

نصائح أخرى

المسرحية متزامن عمليات للحصول على تفاصيل العميل الأصلي SQL OLE ديسيبل، بما في ذلك أمثلة. يقول رابط RIIDs مقبولة فقط هي IID_IDBAsynchStatus وIID_ISSAsynchStatus، لذلك أفهم أن هو أن نموذج البرمجة مجموعة ذات قاعدة، لا تعتمد الإعلام.

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