0

我试图让 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

4

1 回答 1

5

注意:我不确定这是否适用于 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);
于 2013-07-01T17:15:02.070 回答