【问题标题】:How to call async on button click?如何在按钮单击时调用异步?
【发布时间】:2023-03-31 10:10:01
【问题描述】:

我正在像下面这样在 clikc 上调用 asyn

  private List<SuggestedItemsInput> suggestedItemAsync()
    {
        OHDWebService OHDService = new OHDWebService();
        List<SuggestedItemsInput> suggestedItemsList = OHDService.SaveSuggestedItems(ViewState["Body"].ToString(), hfdOrderRecordID.Value);
        return suggestedItemsList;
    }

点击

  protected async void imgbtnClaim_Click(object sender, EventArgs e)
    {
        try
        {
            Task<List<SuggestedItemsInput>> task = new Task<List<SuggestedItemsInput>>(suggestedItemAsync);
            task.Start();
            lblError.Text = "Please Wait. Proccessing...";
            List<SuggestedItemsInput> suggestedItems = await task;
            if (suggestedItems.Count > 0)
            {

但它会阻塞 UI,并且出现如下所示的错误

如何做到这一点?

【问题讨论】:

  • 而不是让按钮单击async 尝试将其创建为一个单独的方法并从您的客户端调用它(angular)。
  • 我正在使用 c#。我想要它在 onlick 功能上
  • 如果您在页面指令中包含 Async="true",它将起作用。请参考stackoverflow.com/questions/51682205/…

标签: c# html asp.net angularjs


【解决方案1】:

像这样创建一个网络方法:

[WebMethod]
public async Task Yourmethod(string value)
{
value = "abc";
  return value;
}

然后从你的前端使用 jquery 像这样点击这个方法:

<script>
$(fucntion(){
    $.ajax({
        type: "POST",
        url: "..../Yourmethod",
        data: '{}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        success: function (data) { }
    });
});

希望对您有所帮助。

【讨论】:

  • 它会修复错误,但所有 UI 都会被阻塞,这就是为什么我需要在 c# 中saync
  • 在您的任何页面中创建一个 webmehtod,然后从您的前端向 webmethod 发送一个 ajax 请求以获取数据。这样用户界面就不会被阻塞。如果你需要一个抽象的例子,请告诉我。
  • 如果你能举个例子就好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 2016-02-11
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多