C# 在执行过程时刷新页面

C# 在执行过程时刷新页面,c#,asp.net,C#,Asp.net,我创建了一个接口来拉取数据,这里有几个简单的步骤 用户从下拉框中选择所需数据,单击“检查可用”按钮,如果有可用记录,则显示“发送请求”按钮 单击“发送请求”按钮后,SQL表被发送到excel文件,该文件使用vba进行轻微修改,然后通过电子邮件从C向用户发送指向该excel文件的链接 我面临的问题是,用户在一两秒钟后变得不耐烦,开始一次又一次地捣乱send Request按钮。这种不耐烦会使应用程序崩溃 我怎样才能使页面正常运行,以便在单击Send Request之后,页面被刷新,但该过程仍然通过

我创建了一个接口来拉取数据,这里有几个简单的步骤

用户从下拉框中选择所需数据,单击“检查可用”按钮,如果有可用记录,则显示“发送请求”按钮

单击“发送请求”按钮后,SQL表被发送到excel文件,该文件使用vba进行轻微修改,然后通过电子邮件从C向用户发送指向该excel文件的链接

我面临的问题是,用户在一两秒钟后变得不耐烦,开始一次又一次地捣乱send Request按钮。这种不耐烦会使应用程序崩溃

我怎样才能使页面正常运行,以便在单击Send Request之后,页面被刷新,但该过程仍然通过服务器执行,并且电子邮件仍然从C发送

public void SendRequest_Click(object sender, EventArgs e)
{    
    //Insert amazing line of code that refreshes the web form but does everything beyond this line

    SendRequest.Visible = false;
    //Creating a new class
    QueryMule mule = new QueryMule();
    Label11.Visible = true;
    string myfilename = Label3.Text;
    string splitusernum = Label4.Text;
    string dtablenum = Label4.Text;
    string exportnum = Label4.Text;
    //Export all export tables to mercuryexport excel file
    mule.SQLExport(18, splitusernum, exportnum);
    //Creating a new excel application to open the mercury template and run its macro
    ExcelApp.Application appExl;
    ExcelApp.Workbook workbook;
    ExcelApp.Worksheet newSheet;
    ExcelApp.Range Range;
    appExl = new ExcelApp.Application();

    RegionName.SelectedItem.Value + timestampeddone + ".xlsm";

    workbook = appExl.Workbooks.Open(@"filepath", Missing.Value,
        Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
        Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
        Missing.Value, Missing.Value, Missing.Value);

    appExl.Visible = true;
    appExl.DisplayAlerts = true;

    System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
    message.To.Add '''REMOVED EMAIL ADDRESS
    message.Subject = "Delivery System";
    message.From '''REMOVED EMAIL ADDRESS
    message.Body = "filepath" + myfilename;
    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("mailhost");
    smtp.Send(message);

    Label4.Text = "Email Sent";

    mule.DropTable(dtablenum);
    mule.DropTable1(dtablenum);
    mule.DropTable2(dtablenum);
    mule.DropExportTable(dtablenum);
}

您需要派生一个后台工作线程来创建excel文件。然后,该请求将立即响应,并显示一条友好的消息,表明当链接准备就绪时,将通过电子邮件向他们发送链接。

您的逻辑包括两个重要操作:生成excel文件和发送邮件。您可以按照Paul的建议使用后台线程,使服务器处理更轻松

否则,请阻止该页面,直到从服务器获得响应,以便在页面准备就绪之前,用户无法与该页面交互。您可以使用jQuery块UI插件来实现这一点


ASP.NET论坛帖子中显示了此插件的示例用法:

是否可以查看更新面板?或者至少在回发之前用javascript禁用发送请求按钮。警告:线程和IIS不能很好地协同工作。最好是启动一个全新的流程。确切地说,我已经有了一个标签来显示这条信息;但是,该消息仅在整个过程完成后显示。因此,我需要写一些东西来显示您的请求已提交,请检查您的电子邮件中的结果包,但我如何在后台工作线程中调用所有过程?我找到了一个简洁的解决方案,我刚刚在java中禁用了按钮。。。