【问题标题】:C# Asynchronous Method CallbackC# 异步方法回调
【发布时间】:2015-04-24 08:54:56
【问题描述】:

我正在构建一个有趣的测试应用程序,到目前为止一切都很好,但我遇到了一个问题。我的 Storyboard 中有一个标签,我可以在 viewDidLoad() 方法中设置文本。但是,我还发出一个 HTTP 请求,以使用异步方法检索和解析一些 JSON 数据。为了遵循单一职责原则,这是在一个单独的类中完成的。所以在我的视图控制器的 init 方法中,我在这个类上调用了StoreData () 方法。它看起来像这样:

public HomeViewController (IntPtr handle) : base (handle)
{
    pc = new PersonCollection ();
    pc.StoreData ();
}

我的问题是:异步StoreData () 方法完成后,如何在标签上设置文本?我可以设置某种回调吗?

问候

【问题讨论】:

  • 如果你首先想要异步的东西,你不应该在构造函数中这样做,因为你无法处理等待

标签: c# ios asynchronous xamarin


【解决方案1】:

你可以这样试试

public HomeViewController (IntPtr handle) : base (handle)
{
  Setup();
}
async void Setup()
{
   var pc = new PersonCollection ();
   await pc.StoreData ();
   // Set The text of the label here

}

【讨论】:

【解决方案2】:

这就是我会做的方式。

public HomeViewController (IntPtr handle) : base (handle)
{
  LoadValues();
}
async Task LoadValues()
{
  var pc = new PersonCollection ();
  var jsonObject=await pc.StoreData ();
  InvokeOnMainThread(()=>{
   textFieldInstance.Text= jsonObject.Name;
  });
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多