【发布时间】:2019-08-26 19:21:17
【问题描述】:
我正在尝试使用网络服务从第三方调用数据,加载数据需要很长时间,所以我需要应用 async/await对于该方法,我在 .cs 中调用该方法,我正在使用如下所示,当我尝试使用“Void”而不是“Task”时,如果我需要很长时间才能加载使用任务事件不会触发。
[WebMethod]
public List<SuggestedItemsInput> SaveSuggestedItems(string emailbody, string OrderHeaderID)
{
List<SuggestedItemsInput> result = null;
//... passing header and neccesery things
request.AddParameter("application/text; charset=utf-8", strFinalEmail, ParameterType.RequestBody);
IRestResponse restResponse = client.Execute(request);
result = JsonConvert.DeserializeObject<List<SuggestedItemsInput>>(restResponse.Content);
//Save to database
if (dtProducts.Rows.Count >= 1)
dalPendingOrders.SaveSuggestedItems(dtProducts);
LogMessage("Suggested Items for " + OrderHeaderID + " : " + products.Products.Count);
return result;
}
在.cs中
protected void btnClaim_Click(object sender, EventArgs e)
{
GetSuggestedItemsFromService();
}
private async void GetSuggestedItemsFromService()
{
List<SuggestedItemsInput> suggestedItems = await Task.Run(() => SaveAndGetSuggestedItemAsync());
ViewState["sItems"] = suggestedItems;
if (suggestedItems != null && suggestedItems.Count > 0)
{
GetSuggestedItems(Request["OrderRecordID"].ToString());
lblInfo.Text = string.Empty;
}
}
private List<SuggestedItemsInput> SaveAndGetSuggestedItemAsync()
{
OHDWebService OHDService = new OHDWebService();
List<SuggestedItemsInput> suggestedItemsList = OHDService.SaveSuggestedItems(hdnPlainBody.Value, hfdOrderRecordID.Value);
return suggestedItemsList;
}
private void GetSuggestedItems(string OrderRecordID)
{
dt = dalPendingOrders.GetSuggestedItems(OrderRecordID);
if (dt.Rows.Count > 0)
{
grdSuggestedItems.DataSource = dt;
grdSuggestedItems.DataBind();
}
else
{
lblInfo.Text = "No Data Found";
}
}
【问题讨论】:
-
“in .cs”是什么意思?这根本没有任何意义。 .cs 是 C# 代码文件的扩展名。它可以在任何.Net源代码项目中找到
-
您的客户端代码是 WinForms 还是 WebForms?有很大的不同。
-
我正在使用网络表单
标签: c# asp.net async-await