【问题标题】:Await not working for 'Parse Xamarin Android'等待不适用于“解析 Xamarin Android”
【发布时间】:2013-07-01 16:47:22
【问题描述】:

我试图让 Parse 在 Xamarin 上工作。我正在 C# 上构建一个 android 应用程序。 在快速入门指南中,有人告诉我将此代码复制并粘贴到 Oncreate 中

var testObject = new ParseObject ("TestObject");
testObject ["foo"] = "bar";
await testObject.SaveAsync();

但它显示“等待”的错误 有谁知道为什么?非常感谢任何帮助!

还有人说我需要将该函数标记为异步。但我不明白它想要什么。 注意:您需要将函数标记为异步以等待 SaveAsync 调用的结果

https://www.parse.com/apps/quickstart#android/xamarin/blank

【问题讨论】:

  • 您使用的 Xamarin 版本是否支持async?上次我检查它是在选择加入预发布(Beta)阶段。

标签: c# android parsing xamarin


【解决方案1】:

注意:我不确定这是否适用于 Xamarin,如果我错了,请纠正我。

基本上,问题在于函数不是异步的。我猜你的函数定义看起来像这样:

public void MyFunction(MyObject arg, etc)
{
    var testObject = new ParseObject ("TestObject");
    testObject ["foo"] = "bar";
    await testObject.SaveAsync();
}

await 是后来在该语言中引入的,为了确保它不会破坏任何旧代码,您需要将async 修饰符添加到一个方法中,以便它能够使用async。像这样:

//note ▼▼▼▼▼ the async modifier in the function declaration
public async void MyFunction(MyObject arg, etc)
{
    var testObject = new ParseObject ("TestObject");
    testObject ["foo"] = "bar";
    await testObject.SaveAsync();
}

这将编译。但是,您还可以进行另一项改进。您可以使用 Task 类作为返回值。这将使其他方法在您的方法上使用await。像这样:

//note the   ▼▼▼▼ new return value
public async Task MyFunction(MyObject arg, etc)
{
    var testObject = new ParseObject ("TestObject");
    testObject ["foo"] = "bar";
    await testObject.SaveAsync();
}

这意味着其他人将能够做这样的事情:

await MyFunction(arguments);

【讨论】:

    猜你喜欢
    • 2019-06-20
    • 2020-03-17
    • 2020-12-13
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多