c# 自动更新 打开新程序时提示被占用

我是通过FTP下载文件的,下载文件后(不关闭下载的程序)再打开就提示“其他程序正在使用这个档案”,还是要先关闭下载的程序,这样打开新程序就不会执行了啊。
private void DownLoadFile(string filename)
{
FtpWebRequest req = (FtpWebRequest)WebRequest.Create("ftp://" + ftpAddress + "/" + filename);
req.Method = WebRequestMethods.Ftp.DownloadFile;
req.UseBinary = true;
req.UsePassive = true;
req.Credentials = new NetworkCredential(ftpUid, ftpPwd);
try
{
using (FtpWebResponse res = (FtpWebResponse)req.GetResponse())
{
string localfile = Path.Combine(localPath, filename);
FileStream fs = new FileStream(localfile, FileMode.Create, FileAccess.Write);
int buffer = 1000000; //1K缓冲
byte[] b = new byte[buffer];
int i = 0;
Stream stream = res.GetResponseStream();
while ((i = stream.Read(b, 0, buffer)) > 0)
{
fs.Write(b, 0, i);
}
}
Console.WriteLine(filename + " download!");
//Log(filename + "下载成功");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
//Log(ex.ToString());
}
finally
{
}
}

通过以下步骤实现:

    新建bat脚本文件

    退出程序(退出时调用cmd.exe命令行,使其1秒后执行新程序)

    bat脚本自动执行

    新程序正确启动

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-01-04
fs 没用 close。

fs 也使用 using 语句吧。本回答被提问者采纳

...writer()怎么会自己循环执行,出现“文件被另一个程序占用”的...
像这种问题,一般就是对文件记性操作的时候,由于没有close就会产生这种错误,你看看你别的代码里有没有操作文件的代码,例如打开,创建之类的,有的话要注意close,否则就会出现这情况

C# 自定义安装包 修改配置文件 文件被占用
假设有一个参照上述应用程序TestApp的库中,然后,根据上述变化,log4net的从TestApp.config文件进行配置。通过这种方式,你可以将原始库的app.config的内容TestApp的项目(后TestApp的项目编译TestApp.config自动生成)来app.confg。希望对您有所帮助!

C# File.delete文件正在被另一个人或程序使用
回答:就是说这个文档被其它程序占用着,网上有个叫unlock的小工具,挺方便的,就是解除这个文档被使用的关系

C# 另一个进程正在使用它,怎么才能找到正在使用它的这个进程呢_百度知 ...
1、有可能是你自己当前的C#程序代码中调用这个文件结束后,没有及时关闭这个文件的流操作,导致下次调用时,系统会判断到你这个文件没有被关闭,一直处于打开读取状态,就会报这个错误,最好的解决办法是,文件IO读取结束后,及时关闭文件流。2、也可能是你这个文件本身就是只读的 3、如果你这个程序已经发...

c# WinForm窗体,通过Filestream方式下载文件之后,导致该文件一直被占...
下载完以后,要释放占用的资源。FileStream mhj = new FileStream();...mhj.Dispose();\/\/结束释放占用资源

C# 更新程序的问题
C\/S架构的自动更新,说白了就是 下载文件、替换文件。如果你有计算机常识,那么应该知道,一个程序是不可能删除自己的,也不可能在一个文件正在运行的时候对他进行删除操作。所以,绝不部分自动更新都是通过另外一个程序来控制,即自动更新程序 流程是:主程序启动、检查版本=> 需要更新=>主程序打开更新...

c#写的winform设置了启动检查更新,又设置了开机自动启动,开机自启动时...
没弄过不清楚,不过可以尝试下当用户点关闭时,阻止关闭然后启动update,隐藏本窗体(你在程序中要处理一下,判断是用户点的关闭,还是系统重启或者关闭引起的窗体关闭)

C# 使用发布(客户端)新版本的的时候提示错误
将之前发布的文件删掉,再将新文件复制,不要采用覆盖的方式

C#下载了一个小access程式,打是时提示未在本地计算机上注册"Microsoft.J...
一种可能是使用了64位的操作系统。而程序被编译为自适应操作系统的,在64位下以64位方式运行,而不幸的是jet 引擎没有64位版本的,所以就不能运行了。如果是这个问题的话,要不改操作系统为32位工或是放在其它32位机器上运行,或是改程序为x86模式运行。第二种可能是jet 引擎有问题,需要重注册一...

C#语句修改【更新】不了啊,每次运行都提示失败,求大神看看
应该是SqlCommand mycom = new SqlCommand(mycon,delStr);应该调换一下顺序!因为程序在被编译的时候是要按照逻辑去编译的,如果要修改数据库数据肯定先要打开数据库然后再有SQL语句最后才可以进行修改。2.去掉 mycom.ExecuteNonQuery();是多余的。3.在取出文本框值的时候最好加上text的Trim()方法去掉...

相似回答