我有一个 ASP.NET WebMethod 的 JQuery AJAX 调用。
我理解async: true
这允许网页在函数返回之前不会被锁定,因此我将其设置为'true'
.
我面临的问题是内部方法GetVersionFromDataBase()
需要GetVersion()
很长时间才能完成,同时整个后端被锁定(单线程)。
用户体验是,对于正在浏览网站的其他用户,即使在不同的页面上,他们的屏幕也会被锁定,直到“重”方法返回。
我怎样才能使函数GetVersionFromDataBase()
在不同的线程/任务中?
$.ajax({
type: "POST",
url: "Default.aspx/GetVersion",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (result) {
alert('the version is:' + result.d);
}
});
public partial class Default : System.Web.UI.Page
{
[WebMethod]
public string GetVersion()
{
string version = GetVersionFromDatabase(); // this is a heavy method freezes the program till it finishes
return version;
}
}