使用BackgroundWorker時,出現(xiàn)ProgressChanged延遲的現(xiàn)象,即我在西面代碼的Completed事件中拋出完成時的messageBox,但是因為ProgressChanged的延遲,我的ProgressBar進度條還沒滿就彈出了對話框,然后progressBar才滿……這問題請幫我分析下。
雖說是AsyncOperation.Post()插入消息會延遲,但是ProgressChanged消息是在Completed消息之前插入的啊,至少執(zhí)行上應(yīng)該保持隊列去執(zhí)行消息吧????
代碼如下:
View Code
public partial class BackgroundWorker_Test : Form
{
private BackgroundWorker worker2 = null;
public BackgroundWorker_Test()
{
InitializeComponent();
worker2 = new BackgroundWorker();
worker2.DoWork += backgroundWorker2_DoWork;
worker2.ProgressChanged += backgroundWorker2_ProgressChanged;
worker2.RunWorkerCompleted += RunWorkerCompleted;
worker2.WorkerSupportsCancellation = true;
worker2.WorkerReportsProgress = true;
}
private void btn_Cancel_Click(object sender, EventArgs e)
{
if (worker2.IsBusy)
{
worker2.CancelAsync();
}
}
private void btn_Start_Click(object sender, EventArgs e)
{
if (!worker2.IsBusy)
{
this.progressBar1.Value = 0;
worker2.RunWorkerAsync();
}
else
{
MessageBox.Show("正在執(zhí)行操作,請稍后");
}
}
private void backgroundWorker2_DoWork(object sender,
DoWorkEventArgs e)
{
BackgroundWorker worker2 = sender as BackgroundWorker;
int sum = 0;
try
{
for (int i = 1; i
- 1 回答
- 0 關(guān)注
- 745 瀏覽
添加回答
舉報
0/150
提交
取消