2012-06-10 2 views
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; 
    } 

    } 

Как вы успешно обновляете прогресс?

+0

возможно дубликат [Обновление Winforms пользовательского интерфейса из результата фонового потока] (http://stackoverflow.com/questions/983289/update-winforms-ui-from-background-thread-result) –

ответ

0
progress.Dispatcher.Invoke(
     System.Windows.Threading.DispatcherPriority.Normal, 
     new Action(
     delegate() 
     { 
       LblProgress.Content = "Downloading Drivers"; 
       progress.Value = 30; 
     } 
    )); 
Смежные вопросы