实在搞不定了,不知道为什么没法调用RunWorkerCompleted()方法,即使执行了ReportProgress方法也不成求解??? public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.WorkerSupportsCancellation = true;
}
private void button3_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
label1.Visible = true;
} private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
int iProgressValue = 1;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker bgwValue = (BackgroundWorker)sender;
backgroundWorker1.ReportProgress(iProgressValue);
parse_file();
if (parse_file() == true)
{
backgroundWorker1.ReportProgress(100);
}
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
listBox1.Items.Clear();
label1.Visible = false;
MessageBox.Show("Done");
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage; }
private bool parse_file()
{
bool parse_return = false;
//要执行的语句 .... 略去...........略去.........................略去
//要执行的语句 .... 略去...........略去.........................略去
parse_return = true;
return parse_return;
} private void button4_Click(object sender, EventArgs e)
{
if (backgroundWorker1.IsBusy)
{
backgroundWorker1.CancelAsync();
}
}
}
{
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.WorkerSupportsCancellation = true;
}
private void button3_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
label1.Visible = true;
} private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
int iProgressValue = 1;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker bgwValue = (BackgroundWorker)sender;
backgroundWorker1.ReportProgress(iProgressValue);
parse_file();
if (parse_file() == true)
{
backgroundWorker1.ReportProgress(100);
}
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
listBox1.Items.Clear();
label1.Visible = false;
MessageBox.Show("Done");
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage; }
private bool parse_file()
{
bool parse_return = false;
//要执行的语句 .... 略去...........略去.........................略去
//要执行的语句 .... 略去...........略去.........................略去
parse_return = true;
return parse_return;
} private void button4_Click(object sender, EventArgs e)
{
if (backgroundWorker1.IsBusy)
{
backgroundWorker1.CancelAsync();
}
}
}
解决方案 »
- 读取DataTable 问题
- 怎样重载运算符?
- 用c#和ASP.NET做网站的问题。
- HTTP Response中的Chunked编码
- 用 C# (VS2005。NET版)編寫的 多線程序 多串口 讀寫數據庫操作的例子?
- 精点C#源码媒体技术RMB收购,感觉C#媒本技术资料不多,哪有Mp3,Wma,Rm等格式的解编码技术资料?
- 请教,C#读取FTP文件问题
- 如何在keypress事件中判断是否当前点了Ctrl + K 键
- vs2005调试的时候怎么实时监控内存的使用数??
- 在c#中是否有象java中的drawstring()这样的方法?万分感谢!
- 一个解决方案sln下可允许多个.net framework版本的工程文件共存么?
- ARCGIS ENGINE中怎么设置图层的alpha值?
这段代码放到 DoWork 中有问题吧?? 我这里测试还回报错DoWork干的活是:比较耗时的放里面 (如查询数据库)backgroundWorker1.ReportProgress(iProgressValue); 应该是放到RunWorkerCompleted中吧
我的问题是无论如何也无法调用RunWorkerCompleted方法
所以当parse_file()执行完后,我讲ReportProgress()的值设为100,尝试调用RunWorkerCompleted,还是不成 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker bgwValue = (BackgroundWorker)sender;
backgroundWorker1.ReportProgress(iProgressValue);
parse_file();
if (parse_file() == true)
{
backgroundWorker1.ReportProgress(100);
}
}
backgroundWorker1.ReportProgress(iProgressValue);
//先注释掉看看
backgroundWorker1.ProgressChanged+=new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);上面的代码没看到,你在Form1.Designer.cs中找找,如果没有那你就这样改
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.WorkerSupportsCancellation = true;
backgroundWorker1.RunWorkerCompleted+=new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
backgroundWorker1.ProgressChanged+=new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged); }