![](/img/trans.png)
[英]Proper way to await something in a method that does not return void, Task, or Task<T>?
[英]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.