首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

文件被占用,

2013-07-09 
文件被占用,求助---------------------------------有两个程序A和B,在A程序的登录窗体启动B程序(定时自动

文件被占用,求助---------------------------------
有两个程序A和B,在A程序的登录窗体启动B程序(定时自动上传数据),如果数据自动上传成功之后,再在A程序中点手工上传就出出现文件正在被另一程序(B)占用,在B程序中上传完之后已经关闭文件了,怎么还会出现这个错误?求解

A程序frmLogion:

 
 //启动自动上传程序
            if (File.Exists(PubInfo.HREXE))
            {
                if (!StartAuto("AutoPosMySql"))
                    System.Diagnostics.Process.Start(PubInfo.HREXE, "");
            }
//手工上传
    private void 销售上传ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (DialogResult.No == MessageBox.Show("是否上传?", "提示",
                MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1))
            {
                return;
            }
            PubMethod.PosToMySql();
            
        }


B程序 frmLoad:

 while (true)
            {
                              //读取文件 conn,File name,isupload,Hrmisppc.ini
                string IpServer = "", FileName = "";
                bool IsUploads;

                hrmisppc HR = new hrmisppc();
                byte[] Hrbyte = new byte[Marshal.SizeOf(typeof(hrmisppc))];

                if (Hours >= 14 && Hours < 16)
                {
                    using (FileStream FsHr = new FileStream(HRMISPPC, FileMode.Open, FileAccess.ReadWrite))
                    {
                        while (FsHr.Read(Hrbyte, 0, Hrbyte.Length) == Hrbyte.Length)
                        {
                            HR = (hrmisppc)BytesToStuct(Hrbyte, typeof(hrmisppc));


                            IpServer = new string(HR.IPServer).Trim();
                            FileName = new string(HR.FileName).Trim();
                            IsUploads = HR.isUpload;

                            HR.isUpload = AutoToMysql(IpServer, FileName, IsUploads);
                            Hrbyte = StructToBytes(HR);
                            FsHr.Seek(-Hrbyte.Length, SeekOrigin.Current);
                            FsHr.Write(Hrbyte, 0, Hrbyte.Length);
                        }
                        FsHr.Flush();
                        FsHr.Close();                      
                        this.Close();
                        // MessageBox.Show("自动上传成功");
                            Thread.Sleep(20 * 60 * 60 * 1000);
                      
                    }
                }
                Thread.Sleep(4*60*60*1000);
            }




[解决办法]
用完把FsHr.Close()都关掉,看看还有没有其它的没有关闭,都关闭释放资源看看,再试试。
------解决方案--------------------


用完文件要关闭,打开的窗口要关闭,
[解决办法]
对的,既然提示文件被占用,那就应该是程序里面还有占用该文件资源的地方,好好检查一下

热点排行