Хотя вы еще не упомянули, какой веб-фреймворк вы используете, лично я бы выполнил этот тип расчета за запросом AJAX.Используйте элементы управления и для обеспечения обратной связи с пользователем (анимация wait-GIF) до завершения запроса.Это функции, которые уже включены в стандартный сайт ASP.NET.НЕ создавайте свои собственные потоки в приложении ASP.NET.ASP.NET уже многопоточный и способен обрабатывать одновременные запросы к вашему приложению.Ваш пример HTML-кода может выглядеть примерно так:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
html code goes here. somewhere you might have a button which triggers a postback that will trigger the start of your math computations...
<asp:LinkButton ID="Button1" runat="server" OnClick="Button1_Click">Start Computations</asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>
где-то еще на странице, где вы включаете свой тег updateprogress.Вы можете видеть, что я связал этот тег с идентификатором панели обновления, который запускает обратную передачу.
<asp:UpdateProgress DisplayAfter="100" runat="server" ID="udp" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
put your animated gif here using an <img /> tag
</ProgressTemplate>
</asp:UpdateProgress>
Используйте серверный элемент управления для повторного отображения вычисленного текста на странице после его вычисления.
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label id="lblResults" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
и код для нажатия кнопки
protected void Button1_Click(object sender, EventArgs e)
{
//do your computations here
lblResults.Text = "the answer";
UpdatePanel2.Update();
}
Удачи!