backgroundworker TargetInvocationException

xtsixidtf 2010-01-18 10:09:25


int fileLenght;
int copyNow;

public Form1()
{
InitializeComponent();
}

/// <summary>
/// 数据库备份按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
string oldName = "";
string newName;
FileStream fs;
FileStream wf;
Byte[] buffer;
int readbytes = 2000;
private void btnCopy_Click(object sender, EventArgs e)
{

OpenFileDialog of = new OpenFileDialog();
if (of.ShowDialog() == DialogResult.OK) oldName = of.FileName;
newName = @"D:\" + oldName.Substring(oldName.LastIndexOf("\\"));
using (FileStream fss = new FileStream(oldName, FileMode.Open, FileAccess.Read))
{
fileLenght = (int)fss.Length;
}
if (File.Exists(newName)) File.Delete(newName);
fs = new FileStream(oldName, FileMode.Open, FileAccess.Read);
wf = new FileStream(newName, FileMode.CreateNew, FileAccess.Write);
buffer = new byte[10240];
readbytes = 20000;
this.backgroundWorker1.RunWorkerAsync();
}

/// <summary>
/// 数据库备份
/// </summary>
public void CopyFile(BackgroundWorker bk)
{
//using (FileStream fs = new FileStream(oldName, FileMode.Open, FileAccess.Read))
//{

// FileStream wf = new FileStream(newName, FileMode.CreateNew, FileAccess.Write);
// byte[] buffer = new byte[1024];
// int readbytes = 2000;
// do
// {
// readbytes = fs.Read(buffer, 0, 1024);
// wf.Write(buffer, 0, 1024);
// copyNow += readbytes;
// bk.ReportProgress(copyNow);
// }
// while (readbytes >= 1024);
//}

while (readbytes >= 10240)
{
readbytes = fs.Read(buffer, 0, 10240);
wf.Write(buffer, 0, 10240);
copyNow += readbytes;
bk.ReportProgress(copyNow);
}
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
CopyFile(this.backgroundWorker1);
e.Cancel = true;
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Maximum = fileLenght;
this.progressBar1.Value = e.ProgressPercentage;
}

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
fs.Close();
wf.Close();
this.progressBar1.Value = 0;
}

BackgroundWorker 第二次运行引发异常
调用的目标发生了异常
TargetInvocationException
怎么解决
在此请教各位朋友
...全文
163 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xtsixidtf 2010-01-18
  • 打赏
  • 举报
回复
怎么就没人回呢

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧