SQLite - ¿cómo puedo manejar potencial de la discordia entre dos hilos separados con el acceso a la base de datos misma?

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

  •  21-09-2019
  •  | 
  •  

Pregunta

PREGUNTA: ¿Cómo puedo manejar potencial de la discordia entre dos hilos separados para acceder a la misma base de datos SQLite

Antecedentes: Tengo una aplicación C # Winforms que utiliza SQLite a través de ADO.net. Tengo un hilo BackgroundWorker en la aplicación de Windows Forms. Me he dado cuenta de que puedo conseguir una excepción cuando tanto el hilo principal, y el subproceso de trabajo de fondo, intentan actualizar la base de datos SQLite, es decir, llamar a un DBDataAdaptor.Update () ..

Así que estoy interesado en lo que comprueba mi código (aunque código hilo principal y / o el código que se ejecuta en BackgroundWorker) para manejar esto con gracia, ya sea a través de una forma de comprobar de antemano o de bloqueo hasta que aparezca OK, o elevar un error específico Soy capaz de captar ...

gracias

¿Fue útil?

Solución

En SQLite puede configurar una devolución de llamada que se activa cuando se encuentra con un error de SQLITE_BUSY o SQLITE_IOERR_BLOCKED (ver http://www.sqlite.org/c3ref/busy_handler.html ).

Como la mayoría de las veces lo que se quiere hacer es dormir y vuelva a intentar la consulta en caso de ocupado, SQLite se ha construido en devolución de llamada que hace exactamente eso; leer sobre sqlite3_busy_timeout en http://www.sqlite.org/c3ref/busy_timeout.html.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top