2013-05-18 111 views
0

我正在开发一个web应用程序,在那里发送电子邮件到数据网格中的选定候选电子邮件ID。我正在使用System.Net.Mail命名空间中的应用程序。当我发送邮件给候选人然后邮件类返回响应。所以我想刺激我的web应用程序的后台进程,并显示处理图像,直到所有邮件发送成功。可以帮助我解决这个问题吗?如何在asp.net web应用程序中实现后台进程

+1

我建议你使用async/await来异步处理电子邮件的发送。你也可以使用ThreadPool.QueueUserWorkItem(YouMethodToSendEmails)方法或Thread类。完成后,显示弹出消息有关电子邮件的状态。你可以做的另一件事 - 创建一个带有标志的枚举,例如(Busy/Idle),并在你的异步方法中设置这个标志。根据它的状态,你可以显示加载图片。 –

+0

嗨伊戈尔洛佐夫斯基。谢谢你能给我一个链接,显示这个 – SANDEEP

回答

0

执行此操作的方法很多。

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

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

注意:不要忘记关闭它在catch块也。

+0

演示代码嗨Mukesh Sakre thanks.its权利,但在发送邮件后,它给出了回应,所以我怎么可以实施后台进程 – SANDEEP

+2

此代码将永远不会工作。 – Dusan

+1

杜桑是正确的,这段代码将永远不会工作,因为服务器不会将响应返回给客户端,直到执行完所有事情,所以基本上,弹出窗口将永远不会显示。 – Icarus

0

有一些方法的嗡嗡声。你可以通过ajax来做到这一点。

  • 取一个div与gif图像。
  • 隐藏这个div initailly
  • 当u点击提交按钮,显示这个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> 
相关问题