1

私が欲しいもの:
AppData から xml を取得して使用する

私がコーディングするもの

   StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
   StorageFile sampleFile = localFolder.GetFileAsync("abc.xml");


エラー: タイプ 'Windows.Foundation.IAsyncOperation' を 'Windows.Storage.StorageFile' に暗黙的に変換できませ

私がチェックすること

このメソッドが正常に完了すると、ファイルを表すStorageFileが返されます。

MSDN から

私が持っているもの
Windows 8 Release Preview 64bit;
Windows 8 用の Visual Studio Express 2012 RC。
C#

MSDN doc に従ってコードを記述します。このエラーが発生する理由と解決方法を教えてください。

4

2 に答える 2

6

ラリーはあなたに正しい解決策を教えてくれました。何が起こっていたのか説明してみましょう。

GetFileAsyncの MSDN ドキュメントを見ると、IAsyncOperation が返されることがわかります。コードは、SampleFile を返すことを前提としています。GetFileAsync はファイルを提供しません。取得が完了するとファイルを提供するオブジェクトを提供します。

C# の Await は、完了の条件が満たされると、そのオブジェクトによって (またはそのオブジェクトに代わって) 呼び出される関数を提供します。その関数は、値を返します。JavaScript の promise (.then または .done) は同様の機能を提供しますが、関数を自分で提供する必要があります。

この理由は、アプリケーションが応答できるようにするためです。ファイルアクセスが遅い。メモリへのアクセスに 1 秒かかった場合、ファイル アクセスには約 15 分かかります。 非同期プログラミングを使用すると、プログラムが待機している間に他のことを実行できます。

于 2012-06-16T04:55:41.430 に答える
3

StorageFile sampleFile = await localFolder.GetFileAsync("abc.xml")C#localFolder.GetFileAsnc("abc.xml").done(function (sampleFile) {})を使用している場合は " " を、JS を使用している場合は" " を使用してみてください。

于 2012-06-16T04:11:39.880 に答える