2013-12-18 93 views
0

我是WP8编程新手,我不知道如何调用异步方法并更新我的UI。基本上,这是我的例子:WP8如何管理代表

public class MyClassGetFinishedEventArgs : EventArgs 
{ 
    public MyClass SomeObject{ get; set; } 
    public List<MyClass> SomeList{ get; set; } 
} 

public static class MyClassManager 
{ 

    private static MyClassService service = new MyClassService(); 
    public static event EventHandler GetFinished = delegate { }; 
    static MyClassManager() 
    { 
     service = new MyClassService(); 
    } 

    public static void Get() 
    { 
     var ea = new MyClassGetFinishedEventArgs(); 

     service.Get(
      delegate { 
       ea.SomeList = service.SomeList; 
       GetFinished(null, ea); 
      } 
      ); 
    } 
} 

在Android上我作出这样的呼吁:

protected override void OnCreate(Bundle bundle) 
    { 
    base.OnCreate(bundle); 
    SetContentView(Resource.Layout.frmContent); 

    MyClassManager.GetFinished += HandleFinishedGet; 
    MyClassManager.Get(); 
    } 

    void HandleFinishedGet(object sender, EventArgs ea) 
    { 
       var args = ea as GetFinishedEventArgs; 
       if (args != null) 
       { 

        if (args.Success) 
        { 
          act.RunOnUiThread(() => 
          { 
        //Do something to update UI 

          } 
          ); 
         } 
        } 
      } 

有没有办法做Windows Phone中的一样吗?

回答

0

你试过

Deployment.Current.Dispatcher.BeginInvoke(() => 
    { 
     //update UI? 
    }); 
+0

是,但我得到的异常 “ 'System.Reflection.TargetInvocationException' 发生在mscorlib.ni.dll” –

+0

@FelipónSinBarreras任何内部异常? –

+0

Yeap我发现了一个细节,我正在填充BeginInvoke块的ListBox,所以我得到的异常是“System.InvalidOperationException:在使用ItemsSource之前Items集合必须是空的” –