Asp.net 在web应用程序中使用多线程

Asp.net 在web应用程序中使用多线程,asp.net,vb.net,multithreading,Asp.net,Vb.net,Multithreading,我正在使用一个应用服务器来调用Oracle报表,我有一个URL来调用报表。当调用报表时,服务器会将其转换为PDF格式,但当报表包含大量数据时,加载会花费大量时间。我想在asp.net中这样做,当我调用报表url时,它会打开PDF文件并将其复制到我的web文件夹的根目录中。下次我调用URL时,它会打开PDF文件,并在后端创建一个新的PDF供下次调用 我做了这个函数来下载文件 Sub DownloadFile_Sap() Dim remoteuri As String = "http

我正在使用一个应用服务器来调用Oracle报表,我有一个URL来调用报表。当调用报表时,服务器会将其转换为PDF格式,但当报表包含大量数据时,加载会花费大量时间。我想在asp.net中这样做,当我调用报表url时,它会打开PDF文件并将其复制到我的web文件夹的根目录中。下次我调用URL时,它会打开PDF文件,并在后端创建一个新的PDF供下次调用

我做了这个函数来下载文件

Sub DownloadFile_Sap()
        Dim remoteuri As String = "http://appsrv01.shakarganj.com.pk:7778/reports/rwservlet?reptest&report=sap_dashboard"
        Dim filename As String = Server.MapPath("~/Files/rwservlet_reptest&report=sap_dashboard.pdf")
        Dim mywebClient As New Net.WebClient()
        mywebClient.DownloadFile(remoteuri, filename)
    End Sub
我在linkbutton上调用了它-代码如下

Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
    ClientScript.RegisterStartupScript(Me.GetType(), "openfile", "window.open('http://202.125.144.34:83/Files/rwservlet_reptest&report=sap_dashboard.pdf');", True)
        DownloadFile_Sap()

    End Sub
但当我在link按钮上调用这个方法时,它得到的时间和下载文件上的时间相同。我该怎么做才能使“链接”按钮在一秒钟内从文件夹调用文件并在后端下载该文件

链接按钮代码在这里

 <asp:linkbutton ID="Linkbutton1" runat="server" PostBackUrl="~/Files/rwservlet_reptest&report=sap_dashboard.pdf" OnClick="DownloadFile_Sap"  >LinkButton</asp:linkbutton>

即使预先创建PDF并将其保存在目录中,也无法缩短下载时间。因此,我认为不能减少下载时间,但是可以通过在请求之前创建PDF并将其放置在目录中来减少PDF。asp.net web应用程序中的多线程不是一个好主意

您在IIS线程池上的源代码有限,如果您尝试在此类操作中使用它, 你们在生产上会遇到严重的问题

所以你能做的就是,拆分到Windows服务。在windows服务应用程序上执行所有昂贵的操作。通过sql表在web应用程序和windows service应用程序之间进行通信

编辑:

以下是此操作的路径:

您将必须访问visual studio项目 1-你的网络应用程序你已经有了吗 2-将作为windows服务运行的新项目

然后,您将拥有包含以下内容的sql表: 报告名称、就绪标志

从web应用程序中填写报告名称 已准备好来自windows的服务报告,并将Ready_标志设置为true 如果设置为true,则可以从web app Ready_标志进行查询,一旦设置为true,
你为客户服务

我的意思是我想在一个触发器上从目录调用文件,同时在后端下载文件,请告诉我任何事件或方法来完成此操作,下载时间应在后端使用,而不是减少,先生,你能告诉我任何位示例,以便我的代码知道下一步要做什么吗?我已经理解了数据库标志方法,但windows服务要在后端而不是在用户面前完成一个进程吗