ftp上传文件 用进度条progressBar显示进度(在线等)

villain2008 villain2008 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

public class upload : Mypublic
{
public delegate void delProgress(int value);
public event delProgress eventProgress;

public delegate void delFinish();
public event delFinish eventFinish;

public string fileName = "";
private long current = 0;
private long total = 1;
private int percent = 0;
int temp = 0;

public void Upload()
{
FileInfo fileinfo = new FileInfo(fileName);
string uri = "ftp://" + IpAddress + "/" + fileinfo.Name;
FtpWebRequest reqFtp;

reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + IpAddress + "/" + fileinfo.Name));
reqFtp.Credentials = new NetworkCredential(Userid, Password);
reqFtp.KeepAlive = false;
reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
reqFtp.UseBinary = true;

reqFtp.ContentLength = fileinfo.Length;
total = fileinfo.Length;

int bufferlenth = 2048;
byte[] buff = new byte[bufferlenth];
int contentLen;

FileStream fs = fileinfo.OpenRead();

try
{
Stream strm = reqFtp.GetRequestStream();
contentLen = fs.Read(buff, 0, bufferlenth);

while (contentLen != 0)
{
strm.Write(buff, 0, bufferlenth);
contentLen = fs.Read(buff, 0, bufferlenth);

current += contentLen;
temp = Int32.Parse((100 * current / total).ToString());
if (temp != percent)
{
eventProgress(temp);
percent = temp;
}
}
strm.Close();
fs.Close();

eventFinish();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Upload Error");
}
}
}

按钮事件
private void button1_Click(object sender, EventArgs e)
{
if (DialogResult.OK == this.openFileDialog1.ShowDialog())
{
upload up = new upload();
up.IpAddress = "192.168.1.31";
up.Userid = "Administrator";
up.Password = "110";
up.fileName = this.openFileDialog1.FileName;

up.eventProgress += new upload.delProgress(up_eventProgress);
up.eventFinish += new upload.delFinish(up_eventFinish);

Thread t = new Thread(new ThreadStart(up.Upload));
t.Start();
}
}

void up_eventFinish()
{
up_eventProgress(100);
MessageBox.Show("上传成功!");
}

void up_eventProgress(int value)
{
this.progressBar1.Value = value;
this.label1.Text = value.ToString() + "%";
}

运行之后报错 :线程间操作无效:从不是创建控件ProgressBar1的线程访问它
请教高手!在线等~~
...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
villain2008
C# 111,129 成员 642,540 内容