1

xamarin フォームで Simple.Odata.Client を使用して OData サービスからデータを取得する方法を教えてもらえますか?

私は次の方法で試します:

ポータブル プロジェクトで

public App()
{
  GetDocument();
}

public async void GetDocument()
{
     String result = await ODataServiceAgent.GetDocuments(skipCount);
}

OData サービス呼び出しで

public static async Task<string> GetDocuments(int skipCount)
        {
            string json = string.Empty;
            try
            {

                var client1 = new ODataClient(new ODataClientSettings(ServiceConstant.sURL_Base, new System.Net.NetworkCredential(ServiceConstant.NCUserName, ServiceConstant.NCPassword))
                {
                    IgnoreResourceNotFoundException = true,
                    //OnTrace = (x, y) => Console.WriteLine(string.Format(x, y)),
                });


                string commands = string.Format(ServiceConstant.sURL_WholeDataByPagging, ServiceConstant.servicePaggingTopCount, skipCount);

                IEnumerable<IDictionary<string, object>> configs = client1.FindEntriesAsync(commands).Result;

                List<IDictionary<string, object>> configList = ((List<IDictionary<string, object>>)configs.ToList());

                json = JsonConvert.SerializeObject(configList);

            }
            catch (Exception ex)
            {
                string excepstionMessage = ex.Message;
            } 
            return json;
        }

「FindEntriesAsync」行を使用して実際の呼び出しが行われている間、応答しません

4

1 に答える 1

0

それは Result への呼び出しにあります。一般に、非同期メソッドで Result または Wait を呼び出すことはお勧めできません。一部の環境 (デスクトップ Windows など) では機能する可能性がありますが、他の環境、特にモバイル環境ではデッドロックが発生します。.Result や .Wait を実行しないでください。

于 2015-06-20T12:13:28.910 に答える