ASP.NET WebMethod の JQuery AJAX 呼び出しがあります。
async: true
関数が戻るまで WebPage がロックされないようにするを理解したので、 に設定しました'true'
。
私が直面している問題は、内部GetVersionFromDataBase()
のメソッドGetVersion()
が完了するまでに長い時間がかかり、その間にバックエンド全体がロックされる (シングルスレッド) ことです。
ユーザー エクスペリエンスは、Web サイトを閲覧している他のユーザーの場合、別のページであっても、「重い」メソッドが戻るまで画面がロックされます。
関数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;
}
}