0

Parse を Xamarin で動作させようとしていました。C# で Android アプリを作成しています。クイック スタート ガイドの中で、このコードをコピーして Oncreate に貼り付けるように言われました

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

しかし、「await」のエラーが表示されます誰もが理由を知っていますか? どんな助けでも大歓迎です!

関数を非同期としてマークする必要があるとも言われました。しかし、私はそれが何を望んでいるのか理解できません。注: 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 に答える