Я не могу заставить этот BackgroundWorker работать для меня. Я использую пример m3rLinEz «s из hereGUI зависает при использовании BackgroundWorker
Проблема заключается в том, что графический интерфейс не реагирует и процент не обновляется.
Я использую главную страницу, и я установил async="true"
в заголовке страницы содержимого.
Я пропустил что-то еще?
ASPX Код:
<asp:Button ID="btnGo" runat="server" Text="Go" OnClick="btnClick_Go" />
<asp:Label runat="server" id="textUpdate" text="0%" />
код за
protected void btnClick_Go(object sender, EventArgs e)
{
BackgroundWorker bw = new BackgroundWorker();
// this allows our worker to report progress during work
bw.WorkerReportsProgress = true;
// what to do in the background thread
bw.DoWork += new DoWorkEventHandler(
delegate(object o, DoWorkEventArgs args)
{
BackgroundWorker b = o as BackgroundWorker;
// do some simple processing for 10 seconds
for (int i = 1; i <= 10; i++)
{
// report the progress in percent
b.ReportProgress(i * 10);
Thread.Sleep(1000);
}
});
// what to do when progress changed (update the progress bar for example)
bw.ProgressChanged += new ProgressChangedEventHandler(
delegate(object o, ProgressChangedEventArgs args)
{
textUpdate.Text = string.Format("{0}%", args.ProgressPercentage);
});
// what to do when worker completes its task (notify the user)
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
delegate(object o, RunWorkerCompletedEventArgs args)
{
lblSuccess.Visible = true;
});
bw.RunWorkerAsync();
}
Могу ли я запустить этот фоновый рабочий, обновить переменную сеанса, а затем обновить панель обновления, чтобы этот объект сеанса на сервере? Или я вообще не могу использовать фонового работника? – Niklas
@ Никлас: Ну, вы теряете большую часть преимуществ, предоставляемых провайдерами «BackgroundWorker». Похоже, вы в основном хотите что-то положить в пул потоков. Лично я не уверен, что буду использовать сеанс как таковой - я бы создал идентификатор для «задачи, которую я начал», и периодически обновлял состояние этой задачи в чем-то постоянном (возможно, базе данных). –
Хорошо, я начну смотреть на темы ... снова =) Спасибо! Это избавило вас от ненужных проб и ошибок. – Niklas