查找SQLite.Interop.dll

时间:2017-07-17 09:31:42

标签: sqlite

我正在使用SQLite作为在UI和服务之间移动数据的方法,但我遇到了一些问题。我环顾四周,看不到其他人有这样的问题。我已经检查了所有的引用,包含Interop dll的x64文件夹包含在项目中,所有这些dll都设置为复制到输出目录,所有目录都具有正确的权限,没有任何工作。

这是我遇到的一个更大问题的一部分,如果我在BackgroundWorker Completed函数中使用SQLite Connection,那么整个服务崩溃,找不到File异常,如果我在实际的BackgroundWorker中运行SQLite Connection我得到的无法加载DLL'SQLite.Interop.dll'错误,最后如果我在与BackgroundWorker无关的函数中使用SQLite连接,那么它可以正常工作(从BackgroundWorker事件函数引用此函数会分别导致相同的错误)。

对此的任何帮助都很棒

代码

Dim LiteUpdateString As String = ""
        Dim LiteConnection = New SQLiteConnection("Data Source=C:\...\AppData\Roaming\OPCService\Tags.db;Version=3;FailIfMissing=True")
        Dim LiteUpdate As String = ""
        UpdateNumber += 1
        teststring += UpdateNumber.ToString
        LiteUpdate = $"UPDATE SQLiteTags SET TagQuality='{teststring}' {SQLWhere}"
        Dim Command As New SQLiteCommand(LiteUpdate, LiteConnection)

        LiteConnection.Open()
        Command.ExecuteReader()
        LiteConnection.Close()

错误

BackgroundWorkerCompleted

  

应用程序:OPCService.exe   框架版本:v4.0.30319   描述:由于未处理的异常,进程终止。   异常信息:System.IO.FileNotFoundException      at OPCService.OPCService.BackgroundWorker1_RunWorkerCompleted(System.Object,System.ComponentModel.RunWorkerCompletedEventArgs)      在System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted(System.ComponentModel.RunWorkerCompletedEventArgs)      在System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean)      在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean)      在System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()      在System.Threading.ThreadPoolWorkQueue.Dispatch()

BackgroundWorker的

  

无法加载DLL'SQLite.Interop.dll':找不到指定的模块。 (HRESULT异常:0x8007007E)

1 个答案:

答案 0 :(得分:0)

我终于设法找到了一个解决方法,因为我可以在一个独立的函数中使用SQLite但是不能从BackgroundWorker事件线程中调用该函数,一旦线程完成就启动一个计时器来执行独立的SQLite函数。