1

私がこれをやろうとすると:

        folderPicker = new FolderPicker();
        folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
        folderPicker.FileTypeFilter.Add(".txt");
        StorageFolder folder = await folderPicker.PickSingleFolderAsync();

エラーが表示されます:

エラー 2 'await' 演算子は、非同期メソッド内でのみ使用できます。このメソッドを 'async' 修飾子でマークし、その戻り値の型を 'Task' に変更することを検討してください。C:\Users\Lukasz\Documents\Visual Studio 2012\Projects\RobimyProjekt\RobimyProjekt\ImageBrowser.xaml.cs.

「await」を削除すると、別のエラーが表示されます:

エラー 2 タイプ 'Windows.Foundation.IAsyncOperation' を 'Windows.Storage.StorageFolder' に暗黙的に変換できません C:\Users\Lukasz\Documents\Visual Studio 2012\Projects\RobimyProjekt\RobimyProjekt\ImageBrowser.xaml.cs 61 36 RobimyProjekt.

どうしたの?そのコードは、Visual Studio 2012 を使用して msdna と i からのものです。

4

4 に答える 4

0

に変更します

private async void (pickFolder(object sender, RoutedEventArgs e)
于 2013-09-18T03:50:51.213 に答える
0

エラーメッセージのアドバイスを聞くことも良い考えかもしれません:

このメソッドを「async」修飾子でマークし、戻り値の型を「Task」に変更することを検討してください。

戻り値のTask型により、メソッドは「待機可能」になります。

他のvoid回答で提案されているソリューションも機能しますが、「ファイアアンドフォーゲット」ソリューションが得られます。推奨される方法は、実際に a を返すTaskことです。これにより、呼び出し元が何かを処理したい場合、たとえば、メソッドから生じる例外が可能になります。

http://msdn.microsoft.com/en-us/magazine/jj991977.aspxから引用するには:

「この最初のガイドラインを要約すると、async void よりも async Task を優先する必要があります。Async Task メソッドを使用すると、エラー処理、構成可能性、およびテスト可能性が容易になります。」

于 2013-09-18T12:50:02.617 に答える