ASP.NET请求背后的大量数学的最佳实践

时间:2018-06-06 18:38:14

标签: asp.net vb.net multithreading math request

我计划实例化对象(类),根据用户的输入进行大量的数学计算。我的直觉是我可以在输出URL(页面)上加载动画wait-GIF,然后定义新类,设置参数,启动一个线程,然后在完成后重新加载空白页。 ASP.NET已经捆绑了动画等待GIF吗?另外,默认情况下,完成后不会对已关闭的对象(类)进行GC(垃圾回收)吗?这样,如果有多个用户,ASP服务器将只有多个线程。只是一些问题,因为我的大部分经验都是WinForms。

2 个答案:

答案 0 :(得分:1)

是的,这是对的。在button_click中执行所有处理。正在为您在页面中实例化一个类。 Asp.net将为同时用户处理所有线程。

答案 1 :(得分:0)

虽然您没有提到您正在使用的是哪种Web框架,但我个人会在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标记。您可以看到我已将此标记与触发回发的更新面板ID相关联。

<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();
}
祝你好运!