SQLite - كيف يمكنني التعامل مع الخلاف المحتمل بين موضوعين منفصلين يصلون إلى نفس قاعدة البيانات؟

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

  •  21-09-2019
  •  | 
  •  

سؤال

سؤال: كيف يمكنني التعامل مع الخلاف المحتمل بين موضوعين منفصلين يصلون إلى نفس قاعدة بيانات SQLite؟

الخلفية: لدي تطبيق C# winforms يستخدم SQLite عبر ado.net. لديّ خيط خلفية عامل في تطبيق WinForms. لقد لاحظت أنه يمكنني الحصول على استثناء عندما يحاول كل من الخيط الرئيسي ، وخيط عامل الخلفية ، تحديث قاعدة بيانات SQLite ، أي استدعاء dbdataadaptor.update () ..

لذلك أنا مهتم بما يتحقق من الكود الخاص بي (وإن كان رمز الخيط الرئيسي و/أو الكود الذي يتم تشغيله في عامل الخلفية) للتعامل مع هذا بأمان ، إما عن طريق طريقة للتحقق مسبقًا ، أو الحظر حتى موافق ، أو رفع خطأ محدد يمكنني التقاطه ...

شكرًا

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

المحلول

في SQLite ، يمكنك تكوين رد اتصال يتم تشغيله عند مواجهة أ SQLITE_BUSY أو SQLITE_IOERR_BLOCKED خطأ (انظر http://www.sqlite.org/c3ref/busy_handler.html).

نظرًا لأن ما تريد القيام به في معظم الأوقات هو النوم وإعادة محاولة الاستعلام على مشغول ، فإن SQLite لديه رد اتصال مدمج يفعل ذلك بالضبط ؛ تقرأ على sqlite3_busy_timeout في http://www.sqlite.org/c3ref/busy_timeout.html.

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