C# 如何在asp.net web应用程序中实现后台进程

C# 如何在asp.net web应用程序中实现后台进程,c#,asp.net,C#,Asp.net,我正在开发一个web应用程序,在该应用程序中,我向数据网格中选定的候选电子邮件id发送电子邮件。我正在应用程序中使用System.Net.Mail命名空间。当我向候选人发送邮件时,Mail类将返回响应。所以我想在我的web应用程序中插入后台进程,并显示一个处理图像,直到所有邮件成功发送。有人能帮我解决这个问题吗 执行此操作的方法有很多 只需使用加载程序(.gif)图像在asp.net中创建AJAX模式弹出窗口,并在SmtpClient的Send()方法之前显示它。请参见下面的伪代码:- Smt

我正在开发一个web应用程序,在该应用程序中,我向数据网格中选定的候选电子邮件id发送电子邮件。我正在应用程序中使用System.Net.Mail命名空间。当我向候选人发送邮件时,Mail类将返回响应。所以我想在我的web应用程序中插入后台进程,并显示一个处理图像,直到所有邮件成功发送。有人能帮我解决这个问题吗

执行此操作的方法有很多

只需使用加载程序(.gif)图像在asp.net中创建AJAX模式弹出窗口,并在SmtpClient的Send()方法之前显示它。请参见下面的伪代码:-

 SmtpClient mSmtpClient = new SmtpClient();
 modalPopUp.Show();
 mSmtpClient.Send(mMailMessage);
 modalPopUp.Close();

注意:别忘了在挡块中关闭它。

有上百种方法。您可以通过ajax实现这一点

  • 使用gif图像进行div
  • 首先隐藏这个div
  • 当你点击提交按钮时,显示这个div
  • 在后台(在您的cs代码中),实现邮件发送
  • 在所有邮件发送完毕并收到回复后,再次隐藏div
下面是前端的简单代码,用于显示进度。在asp.net页面的后端,执行邮件发送操作

<script>
$(document).ready(function () {
    $("#click").click(function () {
        $("#loader").show();
        $.ajax({
            url: '/Home/SendMails/',
            type: 'POST',
            success: function (msg) {
                $("#loader").hide();
            }
        });
    });
});
</script>

<div id="1"></div>
<input type="submit" id="click" value="Click" />

<div id="loader" style="display:none">
    Sending Mails....
    <img src="../../Images/ajax-loader.gif" />
</div>

$(文档).ready(函数(){
$(“#单击”)。单击(函数(){
$(“#加载程序”).show();
$.ajax({
url:“/Home/SendMails/”,
键入:“POST”,
成功:功能(msg){
$(“#加载程序”).hide();
}
});
});
});
发送邮件。。。。

hi Mukesh Sakre谢谢。这是正确的,但在发送邮件后,它会给出响应,因此如何实现后台处理。如果是正确的,这段代码将永远不会工作,因为服务器在执行完所有操作之前不会将响应返回给客户端,因此本质上,弹出窗口将永远不会显示。请参阅。。我刚刚根据您提出的问题向您展示了一个伪代码/逻辑。只需在循环前显示模式弹出窗口,并在循环后结束。没什么大不了的。为此,应用await/asynch将对系统造成损害。@MukeshSakre为什么会造成损害?我建议您使用async/await异步处理电子邮件的发送。您还可以使用ThreadPool.QueueUserWorkItem(YouMethodToSendEmails)方法或线程类。完成后,您将显示带有电子邮件状态信息的弹出窗口。您可以做的另一件事是创建一个带有标志的枚举,例如(Busy/Idle),并在异步方法中设置此标志。根据其状态,您可以显示正在加载的pic.hi Igor Lozovsky。谢谢你能给我提供一个链接,显示这个演示代码吗