【问题标题】:How to kill current process of page如何杀死页面的当前进程
【发布时间】:2017-08-03 07:33:48
【问题描述】:

我正在使用一个 asp.net 应用程序,其中我使用了母版页和内容页。 在其中一个内容页面中,我正在加载一个包含更多数据的网格,在母版页中,我使用更新面板显示带有取消按钮的进度条图像。 现在,当我在内容页面上加载网格时,进度条会显示取消按钮。为了清除进度,我编写了加载程序图像以隐藏在 javascript 中的取消单击按钮上,这工作正常。

但我的进程仍在运行如何在单击取消按钮时取消此进程。 以下是单击母版页按钮时触发的方法。

private void ViewReports(string someFilterCondition)
{
   //Business logic to get data from db.
}

当此方法在业务逻辑中调用时需要更多时间。当单击取消按钮时,它会隐藏加载图像,但用户不知道该进程是否被取消,并且在他得到加载的 gridview 之后一段时间后,他知道该进程仍在运行。 如何取消当前进程?

【问题讨论】:

  • 业务逻辑需要更多时间 - 似乎 sql 查询需要更多时间来给出结果仪式?
  • 是的,凯文,这就是为什么我需要在这里单击取消按钮进程应该杀死它。
  • 看到这个stackoverflow.com/questions/4779679/…。希望对你有帮助。
  • 这很好,但我希望通过单击取消按钮来完成,该按钮从那里关闭客户端的加载图像,我必须这样做。我试图从那里使用 ajax 调用,但它不起作用。如果您对此有任何解决方案,请帮助我。
  • 在该页面中将命令变量声明为全局变量。添加 command.cancel();在一个函数中,并在使用 ajax 单击取消按钮时调用该函数。

标签: javascript asp.net


【解决方案1】:

在该页面中将静态 sql 命令变量声明为全局变量(仅命令变量)。然后写一个web方法,取消里面的命令。然后在单击取消按钮时使用 AJAX 调用该 Web 方法。

//在页面顶部添加命名空间

using System.Web.Services;

//在那个页面全局声明这个变量

 static SqlCommand command = new SqlCommand();

//c#

[WebMethod]
public static string CancelProcess()
{
   try
   {
       command.Cancel();
       return "true";
   }
   catch (Exception ex)
   {
       return ex.Message.ToString();
   }
}

//.aspx

<asp:Button ID="BtnCancel" runat="server" Text="Cancel" OnClientClick="BtnCancel_ClientClick(); return false;" />

//JS

function BtnCancel_ClientClick() {
    $.ajax({
        type: "POST",
        url: "HomePage.aspx/CancelProcess",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
        },
        failure: function (response) {
            //  add error handling code here                   
        }
    });
}

希望对你有帮助..

【讨论】:

  • 嗨 Cavin,目前我正在使用另一个 BA 类,其中我有调用存储过程的方法。此方法是从 asp.net 页面调用的。现在我不知道如何将此命令发送到已经运行的方法。我已经检查了 ajax 调用,然后才知道一个进程已经在运行以加载数据,直到这还没有结束,这个 ajax 调用进程并没有开始。
  • 如果没有你的代码,我可以帮上大忙,没有你的代码我什么都做不了。发布你的代码,告诉我你在哪里卡住了。顺便说一句,什么是 BA?
  • BA 意味着我有其他类库,其中定义了业务逻辑,例如执行过程和返回数据。我有一个简单的问题,如果一个进程已经在运行,我们不能发送另一个进程,直到第一个进程没有完成。如果是这种情况,那么我该如何取消特定命令?
  • 是的,这是有道理的,但是您可以使用线程或异步操作来并行执行多个进程。我有使用控制台应用程序线程的经验,但没有使用 asp.net Web 应用程序线程的经验。线程或异步在 asp.net 网络应用程序中是可能的,所以请研究它并在这里分享你的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多