如何获取正在使用文件的所有进程并在C#中终止它们

时间:2016-02-20 09:56:38

标签: c# process

我有一个共享的SQLite数据库文件。我的桌面应用程序使用此文件并将数据发送到其中,然后将其复制到我的Windows移动设备。然后我的Windows Mobile对其数据进行了一些处理。

当作业完成后,我的桌面应用程序想要获取该文件。有时文件不会复制。

  

错误为file is in use

我在数据层中打开和关闭连接。这是我的手持设备应用程序中的示例方法:

public DataView GetDataView(string command)
    {
        SQLiteConnection con = new SQLiteConnection(ConnectionString_SQLite);
        SQLiteDataAdapter sda = new SQLiteDataAdapter(command, con);
        DataTable dt = null;
        try
        {
            dt = new DataTable();
            sda.Fill(dt);
            return dt.DefaultView;
        }
        catch (Exception x)
        {
            //throw x;
            return null;
        }
        finally
        {
            if (con.State == System.Data.ConnectionState.Open)
                con.Close();

            con = null;
            sda = null;
            dt = null;

            GC.Collect();
        }
    }

此外,错误仅在10%的情况下上升,因此问题不是来自SQLiteConnection。与手持设备的连接正常,因为我可以浏览到由Active-Sync创建的驱动器并查看我的设备的文件。

重启设备将解决错误,但这不是我和我的客户想要的。 我知道问题是我的申请,但我不知道如何解决。这是我的PC应用程序代码来获取文件:

private bool GetFileFromHH()
    {
        OpenNETCF.Desktop.Communication.RAPI rapi = new OpenNETCF.Desktop.Communication.RAPI();

        try
        {
            rapi.Connect();

            if (!rapi.DeviceFileExists(Constant.SqliteDBPath_Device))
            {
                msg.MessageBox(
                "The database file on handheld was not found.",
                "",
                MessageBoxButtons.YesNo,
                DLL3.ShowMessage.IconStyle.Copy);
                return false;
            }

            rapi.CopyFileFromDevice(Constant.SqliteDBPath_PC, Constant.SqliteDBPath_Device, true);

            DirectoryInfo DI = new DirectoryInfo(Constant.SqliteDBPath_PC);
            DI.Attributes = FileAttributes.Normal;
            return true;
        }
        catch (Exception x)
        {
            msg.MessageBox(
                x.Message,
                "",
                MessageBoxButtons.OK,
                DLL3.ShowMessage.IconStyle.Copy);
            return false;
        }
    }

我测试了一些方法,我很清楚我的应用程序正在使用掌上电脑中的文件,但我不知道哪个应用程序HH-appPC-app。 有没有办法关闭文件上的所有进程或强制复制或其他什么?

确定应用程序是一个很好的帮助,它的自我和杀戮它将完成我的请求。

0 个答案:

没有答案