Я не могу заставить свой BackgroundWorker обновить мой интерфейс. Я посмотрел на этого бывшего. как-делать-я-бежать-а-простой-бит-в-кода-в-новом-нить
Когда я запускаю код, он не обновляет мой ярлык lblSuccess.Text с 10%, 20% и т. Д. Но когда он сделан на 100%, он обновляет ярлык lblSuccess.Text с помощью Finished.
Когда я отлаживаю код, он попадает в "lblSuccess.Text = string.Format (" {0}% Completed ", args.ProgressPercentage);" каждый раз, так что похоже, что все работает нормально, но значение не отправляется во внешний интерфейс.
Мой код выглядит так:
AJAX:
function GetCustomers() {
SetHiddenGetCustomer();
var formData = new FormData();
var hiddenMediaName = $("#hiddenMediaName").val();
var hiddenGetCustomers = $("#hiddenGetCustomers").val();
formData.append("hiddenMediaName", hiddenMediaName);
formData.append("hiddenGetCustomers", hiddenGetCustomers);
$('#loadingmessage').show();
$.ajax({
type: 'post',
url: 'ajax/Suppliers_Media_Edit.aspx',
data: formData,
dataType: 'html',
contentType: false,
processData: false,
success: function (data) {
$('#loadingmessage').hide();
$('#datatable_fixed_column').html(jQuery(data).find('#datatable_fixed_column').html());
$('#lblSuccess').html(jQuery(data).find('#lblSuccess').html());
$('#lblError').html(jQuery(data).find('#lblError').html());
if (jQuery(data).find('#lblSuccess').html() !== "") {
$('#SuccessForm').show();
} else {
$('#ErrorForm').show();
}
},
error: function (data) {
$('#loadingmessage').hide();
$('#lblError').html(jQuery(data).find('#lblError').html());
$('#ErrorForm').show();
}
});
}
C # код:
protected void Page_Load(object sender, EventArgs e)
{
Boolean parsedValue;
var hiddenSubmit = Request.Form["hiddenSubmit"];
var hiddenLoadPage = Request.Form["hiddenLoadPage"];
var hiddenSubmitForAllCustomers = Request.Form["hiddenSubmitForAllCustomers"];
var hiddenGetCustomers = Request.Form["hiddenGetCustomers"];
if (Boolean.TryParse(hiddenGetCustomers, out parsedValue))
{
if (parsedValue)
{
LoadCustomers(sender, e);
}
}
}
private void LoadCustomers(object sender, EventArgs e)
{
var id = Request.Form["hiddenMediaName"];
var customersToAdd = new List<Mindworking.DirectoryManagementV2.BusinessObjects.Customer>();
BackgroundWorker bw = new BackgroundWorker();
// this allows our worker to report progress during work
bw.WorkerReportsProgress = true;
bw.RunWorkerAsync();
// 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)
{
lblSuccess.Text = string.Format("{0}% Completed", args.ProgressPercentage);
});
// what to do when worker completes its task (notify the user)
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
delegate(object o, RunWorkerCompletedEventArgs args) { lblSuccess.Text = "Finished!"; });
bw.RunWorkerAsync();
}
Я надеюсь, что кто-то может увидеть проблему здесь и сказать мне, что я делаю неправильно.