簡體   English   中英

第二個等待在方法中沒有返回正確的值

[英]Second await doesn't return proper value in method

我有一個在 Android 中的 onClick-Event 上調用的 ansync 方法。 在該方法中進行了一些檢查,然后使用 await 調用搜索方法,該方法發送搜索查詢並獲得響應。

不幸的是,只有第一次調用搜索方法時,程序才能從該方法中獲得正確的返回值。 如果我嘗試在第二個 if-block 中使用 search-method,則 search-method 返回 null。

我檢查了搜索方法是否收到了正確的響應,問題似乎出在返回部分,因為在搜索方法中收到了正確的響應。

我的代碼如下所示:

private async void CreateSearchQuery(object sender, EventArgs e)
    {
        SearchQuery searchQuery = new SearchQuery();

        if (spinnerPosition == FIBU)
        {
            searchQuery.doctype = "Fibu Rechnungen";
            searchQuery.query   = new Dictionary<string, string>();
            searchQuery.query.Add("belegnr", belegnummer.Text);

            prefs = PreferenceManager.GetDefaultSharedPreferences(this);
            var token = prefs.GetString("token", "");

            ProgressDialog progress = new ProgressDialog(this);
            progress.Indeterminate  = true;
            progress.SetProgressStyle(ProgressDialogStyle.Spinner);
            progress.SetMessage("Suche nach Daten....");
            progress.SetCancelable(false);
            progress.Show();

            JArray searchresult = await SearchQuery.SendSearchQuery(searchQuery, token);
            progress.Cancel();

            FibuDocument[] documents    = searchresult.ToObject<FibuDocument[]>();
            var intent                  = new Intent(this, typeof(SearchFibuDetailsActivity));
            var json                    = JsonConvert.SerializeObject(documents);

            ISharedPreferencesEditor editor = prefs.Edit();
            editor.PutString("searchQuery", json);
            editor.Apply();       

            StartActivity(intent);                
        }

        if (spinnerPosition == AUFTRAGSBELEGE)
        {
            searchQuery.doctype = "Auftragsbelege";
            searchQuery.query = new Dictionary<string, string>();

            if(auftragsnummer.Text != "")
            {
                searchQuery.query.Add("auftragsnr", auftragsnummer.Text);
            }
            if(gstKode.Text != "")
            {
                searchQuery.query.Add("gst", gstKode.Text);
            }
            if(trackTrace.Text != "")
            {
                searchQuery.query.Add("sttnr", trackTrace.Text);
            }

            prefs = PreferenceManager.GetDefaultSharedPreferences(this);
            var token = prefs.GetString("token", "");

            ProgressDialog progress = new ProgressDialog(this);
            progress.Indeterminate = true;
            progress.SetProgressStyle(ProgressDialogStyle.Spinner);
            progress.SetMessage("Suche nach Daten....");
            progress.SetCancelable(false);
            progress.Show();

            JArray searchresult = await SearchQuery.SendSearchQuery(searchQuery, token);
            progress.Cancel();

            Document[] documents = searchresult.ToObject<Document[]>();

            var json = JsonConvert.SerializeObject(documents);

使用不同的“searchQuery”實例而不是共享一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM