0
У меня есть программа, которая обращается к веб-службе WCF, которую я запускаю через HTTP.Обновление прогресса при обращении с обратными вызовами с WCF
Программа должна войти и процесс Логин это:
Get Staff List from WebService.
Gets Drivers List from Webservice.
Gets Vehcile list from web service.
logged in.
Я хотел бы обновить прогресс после каждого этапа. Так я думал, что цепь их с помощью методов IAsycnhResult ..
Однако, когда я пытаюсь обновить прогресс из этих handlecallback методов, я получаю сообщение об ошибке:
The calling thread cannot access this object because a different thread owns it.
Код:
ASreference.Service1Client client = new ASreference.Service1Client();
private void login()
{
//User has already entered username/password
AsyncCallback CallBack = new AsyncCallback(HandleCallback);
client.BeginGetStaff(CallBack, client);
TxtboxPassword.IsEnabled = false;
TxtboxUsername.IsEnabled = false;
LblProgress.Content = "Logging In";
progress.Value = 10;
}
void HandleCallback(IAsyncResult result)
{
bool success = false;
try
{
Staff = client.EndGetStaff(result);
success = true;
}
catch
{
MessageBox.Show("Incorrect username or password");
client = new ASreference.Service1Client();
EnableTextbox();
}
if (success)
{
AsyncCallback CallBack = new AsyncCallback(DriversCallBack);
client.BeginGetDrivers(CallBack, client);
LblProgress.Content = "Downloading Drivers"; //CAUSES ERROR
progress.Value = 30;
}
}
Как вы успешно обновляете прогресс?
возможно дубликат [Обновление Winforms пользовательского интерфейса из результата фонового потока] (http://stackoverflow.com/questions/983289/update-winforms-ui-from-background-thread-result) –