麻烦帮我看一下有什么错,我是新手,改了一个晚上也没改出来
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
button2.Enabled = true;
long l = 1000;
try
{
l = Convert.ToInt64(textBox1.Text);
}
catch { }
backgroundWorker1.RunWorkerAsync(l); } private void button2_Click(object sender, EventArgs e)
{
//取消异步操作
this.backgroundWorker1.CancelAsync();
button2.Enabled = false;
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
//获取产生本事件的backgroundWorker对象
BackgroundWorker worker = sender as BackgroundWorker;
//将计算结果赋给DoWorkEventArgs的Result属性
//RunWorkerCompleted事件的处理方法将得到该值
e.Result = LongTimeOperation((long)e.Argument, worker, e);
}
catch (Exception e1)
{
Console.WriteLine("DoWork的错误是"+e1.Message);
}
} private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
} private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
try
{
//首先处理出现错误或者异常的情形
if (e.Error != null)
{
MessageBox.Show(e.Error.Message, "Long Time Operation Sample");
}
else if (e.Cancelled)//处理被用户取消的情形
{
MessageBox.Show("取消了操作", "Long Time Operation Sample");
}
else//得到正确结果
{
MessageBox.Show("结果是:" + e.Result.ToString(), "Long Time Operation Sample");
}
button1.Enabled = true;
button2.Enabled = false;
this.progressBar1.Value = 0; }
catch (Exception e0)
{
Console.WriteLine("RunWorkerCompleted的错误为" + e0.Message);
}
}
//进行实际工作的方法
//进行循环加法计算
private long LongTimeOperation(long maxNum,BackgroundWorker worker,DoWorkEventArgs e)
{
try
{
long result = 0;
for (long l = 0; l < maxNum; ++l)
{
//如果用户取消运算,则终止操作
if (worker.CancellationPending)
{
e.Cancel = true;
}
else
{
result += l;
//报告已经完成工作的百分比
int percentComplete = (int)((float)l / (float)maxNum * 100);
worker.ReportProgress(percentComplete);
//让出时间片给主线程
//Thread.Sleep(l);
}
}
return result;
}
catch (Exception e2)
{
Console.WriteLine("LongTimeOperation"+e2.Message);
}
}
错误:“进度.Form1.LongTimeOperation(long, System.ComponentModel.BackgroundWorker, System.ComponentModel.DoWorkEventArgs)”: 并非所有的代码路径都返回值
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
button2.Enabled = true;
long l = 1000;
try
{
l = Convert.ToInt64(textBox1.Text);
}
catch { }
backgroundWorker1.RunWorkerAsync(l); } private void button2_Click(object sender, EventArgs e)
{
//取消异步操作
this.backgroundWorker1.CancelAsync();
button2.Enabled = false;
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
//获取产生本事件的backgroundWorker对象
BackgroundWorker worker = sender as BackgroundWorker;
//将计算结果赋给DoWorkEventArgs的Result属性
//RunWorkerCompleted事件的处理方法将得到该值
e.Result = LongTimeOperation((long)e.Argument, worker, e);
}
catch (Exception e1)
{
Console.WriteLine("DoWork的错误是"+e1.Message);
}
} private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
} private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
try
{
//首先处理出现错误或者异常的情形
if (e.Error != null)
{
MessageBox.Show(e.Error.Message, "Long Time Operation Sample");
}
else if (e.Cancelled)//处理被用户取消的情形
{
MessageBox.Show("取消了操作", "Long Time Operation Sample");
}
else//得到正确结果
{
MessageBox.Show("结果是:" + e.Result.ToString(), "Long Time Operation Sample");
}
button1.Enabled = true;
button2.Enabled = false;
this.progressBar1.Value = 0; }
catch (Exception e0)
{
Console.WriteLine("RunWorkerCompleted的错误为" + e0.Message);
}
}
//进行实际工作的方法
//进行循环加法计算
private long LongTimeOperation(long maxNum,BackgroundWorker worker,DoWorkEventArgs e)
{
try
{
long result = 0;
for (long l = 0; l < maxNum; ++l)
{
//如果用户取消运算,则终止操作
if (worker.CancellationPending)
{
e.Cancel = true;
}
else
{
result += l;
//报告已经完成工作的百分比
int percentComplete = (int)((float)l / (float)maxNum * 100);
worker.ReportProgress(percentComplete);
//让出时间片给主线程
//Thread.Sleep(l);
}
}
return result;
}
catch (Exception e2)
{
Console.WriteLine("LongTimeOperation"+e2.Message);
}
}
错误:“进度.Form1.LongTimeOperation(long, System.ComponentModel.BackgroundWorker, System.ComponentModel.DoWorkEventArgs)”: 并非所有的代码路径都返回值
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货