Если вы создаете многопоточное приложение, наличие знаний, которые вы просите, не решит никаких проблем. Они могут заставить их появляться реже, но иногда вы увидите ту же проблему, что и раньше.
Почему? Потому что с момента, когда вы спрашиваете: «Вы заблокированы?» к моменту, когда вы говорите «в таком случае, позвольте мне заблокировать вас, чтобы что-то сделать», другой поток, возможно, вскочил и заблокировал его.
Если вы не получите тайм-аут, я бы справился с исключениями и определял в каждом случае, что делать.
Кроме того, поскольку SQLite по сути является однопользовательским (а не пользователем, как у человека, а как пользователь, как в базе данных «что-то, что использует базу данных»), вы можете подумать, что это не становится неправильным инструментом для работа.
Спасибо за ваш ответ, нет, это почти идеальная база данных для моего приложения, я думаю, мне нужно использовать bool для проверки того, что-то только пытается отправить запрос в базу данных, и в настоящий момент это так, Я мог бы использовать этот bool, чтобы другие потоки не могли отправить запрос в базу данных, одна проблема, когда в bool было установлено что-то вроде: busy = false снова, он должен немедленно выполнить «Задачи» (запрос к базе данных), когда у него есть время. Любой способ достичь этого с помощью цикла while? – Max
Что вы ищете, это Compare and Swap. C# имеет один в классе Interlocked http://msdn.microsoft.com/en-us/library/801kt583%28v=vs.110%29.aspx. Другое, что вы можете использовать, это Mutex – shimpossible