2013-07-01 153 views
0

我试图让解析工作在Xamarin上。我正在C#上构建一个Android应用程序。 在快速入门指南,有人告诉我复制此代码粘贴到在OnCreate等待不工作'解析Xamarin Android'

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

但它显示了“等待” 有谁知道这是为什么错误?任何帮助是极大的赞赏!

还有人说,我需要将该函数标记为异步。但我不明白它想要什么。 注意:您需要标记功能异步为了等待SaveAsync呼叫

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

+0

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

回答

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);