Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 回发ASP.NET后向客户端发送通知_C#_Asp.net_Asynchronous_Ado.net - Fatal编程技术网

C# 回发ASP.NET后向客户端发送通知

C# 回发ASP.NET后向客户端发送通知,c#,asp.net,asynchronous,ado.net,C#,Asp.net,Asynchronous,Ado.net,我有一个UPDATESQL事务,它使用C#.NET 4.0连接到SQL Server数据库(我目前使用的是SqlCommand.ExecuteNonQuery,它不是异步的,所以我确定我需要更改它)。事务执行时间很长(大约一分钟)。我有ASP.NET应用程序(Web表单),我希望异步执行事务,同时让用户能够与应用程序交互(浏览页面)。在执行完成后,我希望向用户推送一种通知,告诉他事务已经完成 我意识到我的问题有两个部分:ADO.NET异步部分和触发应用程序在事务完成时向客户端推送通知的部分 实现

我有一个
UPDATE
SQL事务,它使用C#.NET 4.0连接到SQL Server数据库(我目前使用的是
SqlCommand.ExecuteNonQuery
,它不是异步的,所以我确定我需要更改它)。事务执行时间很长(大约一分钟)。我有ASP.NET应用程序(Web表单),我希望异步执行事务,同时让用户能够与应用程序交互(浏览页面)。在执行完成后,我希望向用户推送一种通知,告诉他事务已经完成

我意识到我的问题有两个部分:ADO.NET异步部分和触发应用程序在事务完成时向客户端推送通知的部分


实现这两个部分的最佳方法是什么?

Signal将满足您的要求


或者在SQl操作之后,您可以从ExecuteOnQuery获取响应并将其保存到隐藏字段中,在客户端,您可以使用Jquery setInterval来检查隐藏字段值

实际上,您可以使用Jquery对执行SQL事务的方法进行异步调用,然后在代码执行完成后将向用户返回消息。 有关更多信息,请查看以下示例 Jquery代码

  $.post( "PageName.aspx/UpdateMethodName", {}) //you can replace method name
   .done(function( data ) {
    alert(data);
});
现在,在您的ASPX页面中,必须有一个用[WebMethod]属性修饰的静态方法

[WebMethod]
  public static string UpdateMethodName() //method name will be called from jquery
  {
     // your 
    return "Message";
  }
更多信息可以在这里找到


我希望帮助

您可以使用Asp中的更新面板启动对服务器的异步调用。并在加载时显示某种gif。正如Dibu建议的那样,SignalR将是您的理想解决方案,您可以在ASP.net网站上找到许多文档/示例。但如果您不赞成对应用程序进行如此大的更改,请特别提及(您不想使用SignalR)。您希望用户能够在服务器处理任务(可以完成)时继续浏览web。当服务器任务完成时,它必须向…发送通知。。。?无法完成。将某些内容从服务器推送到客户端的概念根本不存在。是客户端(浏览器)启动与服务器的交互。对于此请求的SQL部分,您可以在本文中查看Asych过程执行:。根据@Dibu,您应该查看signar,以便在作业完成运行时通知客户机-当它们导航到不同的页面时,它应该在每个页面加载时重新连接,以便可以访问。但是,您可能需要进行某种重试,以防在页面加载完成时处于页面加载之间;或者,如果他们关闭浏览器再也不回来,您可能需要放弃这种方式。