当前位置: 首页 > 知识库问答 >
问题:

进程 - winform程序中解除占用的方法求助。详见代码表述,并求助?

冯嘉珍
2024-04-02

Winform编程中,有一个场景是:
1、窗体启动时创建一个test.db数据库文件;
2、窗体关闭时将这个新建的test.db文件删除。
但是在处理时出现该文件被其他进程占用。
代码很简单,两个事件,使用的是using Microsoft.Data.Sqlite;库
Load事件

        private void Form1_Load(object sender, EventArgs e)        {            string source = "Data Source= " + "E:\\test.db";            using(SqliteConnection sc = new(source))            {                sc.Open();                sc.Close();                Trace.WriteLine(sc.State);            }        }

FormClosed事件

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)        {            File.Delete("E:\\test.db");        }

看似将数据库连接关闭了,因为 Trace.WriteLine(sc.State);这句在输出窗口显示 为 Closed.
但在执行File.Delete("E:\test.db");
出现如下图示:
错误信息

错误信息1

应该还是这个窗体进程在占用着这个test.db文件
但我不知道还有什么方法是可以释放的,包括把sc = null;这种设置也是不行的。

求助SF大佬,给予指导

共有1个答案

周育
2024-04-02

StackOverflow : System.Data.SQLite Close() not releasing database file
StackOverflow : Delete sqlite db file

根据链接,关键是删除文件前 强制 GC 运行,然后等 GC 完成

 private void Form1_FormClosed(object sender, FormClosedEventArgs e){    GC.Collect();    GC.WaitForPendingFinalizers();    File.Delete("E:\\test.db");}
 类似资料:
  • 主要内容:在MATLAB中求解基本代数方程,求解代数中的基本代数方程,在MATLAB中求解二次方程,在Octave中求解二次方程,求解MATLAB中的高阶方程,在Octave中求解高阶方程,MATLAB中求解方程组,在Octave中求解方程组,在MATLAB中扩展和集合方程,在Octave扩展和集合方程,代数表达式的因式分解和简化到目前为止,我们已经看到所有的例子都在MATLAB以及它的GNU,或者称为Octave。 但是,为了求解基本代数方程,MATLAB和Octave都不同,所以这里将分别介

  • 本文向大家介绍Python中协程用法代码详解,包括了Python中协程用法代码详解的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是python中协程的相关问题,具体介绍如下。 Num01–>协程的定义 协程,又称微线程,纤程。英文名Coroutine。 首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元。 为啥说他是一个执行单元,因为他自带CPU上下文。这样只要在合适的时机,

  • 本文向大家介绍VC++中进程与多进程管理的方法详解,包括了VC++中进程与多进程管理的方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了VC++中进程与多进程管理的方法,分享给大家供大家参考。具体方法分析如下: 摘要: 本文主要介绍了多任务管理中的多进程管理技术,对进程的互斥运行、子进程的创建与结束等作了较详细的阐述。 关键词: VC++6.0;进程;环境变量;子进程 进程   进程

  • 本文向大家介绍C# WinForm应用程序降低系统内存占用方法总结,包括了C# WinForm应用程序降低系统内存占用方法总结的使用技巧和注意事项,需要的朋友参考一下 背景: 微软的 .NET FRAMEWORK 现在可谓如火如荼了。但是,.NET 一直所为人诟病的就是“胃口太大”,狂吃内存,虽然微软声称 GC 的功能和智能化都很高,但是内存的回收问题,一直存在困扰,尤其是 winform 程序,

  • 本文向大家介绍详解用java描述矩阵求逆的算法,包括了详解用java描述矩阵求逆的算法的使用技巧和注意事项,需要的朋友参考一下 今天很开心把困扰几天的问题解决了,在学习线性代数这门课程的时候。想通过程序实现里面的计算方法,比如矩阵求逆,用java代码该如何描述呢? 首先,咱们先用我们所交流语言描述一下算法思路: 1.求出一个矩阵A对应的行列式在第i,j(i表示行,j表示列)位置的余子式(余子式前面

  • 我试图通过绘制一棵恢复树并将其求解为替换方法来求解。但是我很难理解sqrt方法将如何影响这个过程,如果可能的话,我正在寻找一些指针 非常感谢!