UWPでMicrosoft.OData.Clientを使用する時、LINQ式でエラー

公開日: : Blog, Microsoft, 未分類 , , ,

UWPからは非同期メソッドを実行する必要があるので、通常はExecuteAsyncをコールするが、
LINQ式を使ってエンドポイントに投げようとすると以下の例外が発生する。

This target framework does not enable you to directly enumerate over a data service query. This is because enumeration automatically sends a synchronous request to the data service. Because this framework only supports asynchronous operations, you must instead call the BeginExecute and EndExecute methods to obtain a query result that supports enumeration.

IQueryableをDataServiceQueryにキャストしてBeginExecuteとEndExecuteを非同期実行する必要がある。
以下のようなメソッドを作成してLINQを渡してやれば良い。

protected Task<IEnumerable<T>> ExecuteAsync<T>(IQueryable<T> query)
{
    var odataQuery = (DataServiceQuery<T>)query;
    var taskFactory = new TaskFactory<IEnumerable<T>>();
    return taskFactory.FromAsync(odataQuery.BeginExecute(null, null), iar => odataQuery.EndExecute(iar));
}

関連記事

no image

Desktop App Converter で作成したUWPアプリケーションをストアで公開したい

Twitterで掲題について調べている人がいらっしゃって、一緒に調べてみたのだが 案内されているペー

記事を読む

no image

シングルボードコンピュータの動作温度について

Raspberry Pi 3 で屋外用のIoT機器を作成できないかと調べていたが、どうやらRaspb

記事を読む

no image

【WPF/XAML】Visibility変更時のアニメーション切替

ストーリーボードを使わずに、Visibility変更でアニメーションを発生させたかった。 やってる

記事を読む

Visual Studio 2015 + PHP Tools for Visual Studio で App Service for Linux へデプロイ

発端はこれ。 https://social.msdn.microsoft.com/Forums/ja

記事を読む

no image

RPi3 OmxPlayer / VLC Player 連続再生2回目から映像が乱れる問題

Raspberry Pi 3 Model の Ubuntu や Raspbian で OmxPlay

記事を読む

no image

YomiganaWPFTextBox

こんにちは。 WPFでテキストボックスに入力した内容をカナ変換する方法について今日は掲載します

記事を読む

【ストアアプリ】画面遷移の基本①

こんにちは。 Windowsストアアプリをぼちぼち触り始めています。 WindowsRuntim

記事を読む

no image

Raspberry Pi 3 Model B 各OS、動画プレイヤーでの再生比較

ベンチマークではなく、ただ感想をメモしただけ。 Windows 10 IoT Core C#

記事を読む

no image

【Cocos2d-x】Cocos2d-xセットアップ

メモ。Xcodeはインストール済、OSはMac10.9.5 必要なものをダウンロード&解凍

記事を読む

Xcode標準テンプレート

Xcodeで新規Projectを作成した時にテンプレートを選ぶことが出来る。 「Choose a

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑