Если эта операция является синхронной, то пользователь должен дождаться ее завершения, вы можете использовать Ajax ModalPopupExtender, чтобы сообщить пользователю, что сервер занят сейчас, выполняя этот длительный расчет.
На ModalPopupExtender вы можете поместить значок spinner или, возможно, расширить его, чтобы включить индикатор выполнения.
код разметки:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button runat="server" ID="hiddenTargetControlForModalPopup" style="display:none"/>
<ajaxToolkit:ModalPopupExtender runat="server" ID="programmaticModalPopup"
BehaviorID="programmaticModalPopupBehavior" TargetControlID="hiddenTargetControlForModalPopup"
PopupControlID="programmaticPopup" BackgroundCssClass="modalBackground"
DropShadow="True" RepositionMode="RepositionOnWindowScroll" >
</ajaxToolkit:ModalPopupExtender>
<asp:Panel runat="server" CssClass="modalPopup" ID="programmaticPopup" style="background-color:#FFFFCC;display:none;height:75px;width:150px;padding:10px">
<asp:UpdateProgress>
<ProgressTemplate>
<div style="text-align:center">
<div style="margin:auto;"><img alt="loading..." src="images/spinner.gif" /></div>
<p>This may take several minutes...Please wait.</p>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</asp:Panel>
</asp:UpdatePanel>
JS код (для Toogle модального всплывающего окна):
function showPopup() {
var modalPopupBehavior = $find('programmaticModalPopupBehavior');
modalPopupBehavior.show();
}
function hidepopup() {
var modalPopupBehavior = $find('programmaticModalPopupBehavior');
modalPopupBehavior.hide();
}
Примечания: В некоторых запущенных случаях могут потребоваться для реализации:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
, а затем добавить обработчик JS с именем EndRequestHandler
. Это ca когда сервер возвращается из исполнения.
Надеюсь, что это поможет.
Извините за задержку в ответе на это и спасибо за ответ, я в процессе перемещения этого тяжелого подъема в консольное приложение, работающее отдельно за пределами приложения ASP.NET. – Kevin