Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.net网站C中自动执行操作#_C#_Asp.net - Fatal编程技术网

C# 在ASP.net网站C中自动执行操作#

C# 在ASP.net网站C中自动执行操作#,c#,asp.net,C#,Asp.net,我有一段代码,我需要在后台自动运行,而不管我正在查看哪个页面。例如,如果我在一个网站的主页或关于页面,我希望一段代码仍然自动运行。确切地说,我想从我所做的email类中每隔30分钟发送一次email通知。我知道,类似的事情可以通过windows服务完成,但我想在网站上的代码 public class Email { string emailFrom = "senderemail@gmail.com"; string password = "yourpassword";

我有一段代码,我需要在后台自动运行,而不管我正在查看哪个页面。例如,如果我在一个网站的主页或关于页面,我希望一段代码仍然自动运行。确切地说,我想从我所做的email类中每隔30分钟发送一次email通知。我知道,类似的事情可以通过windows服务完成,但我想在网站上的代码

public class Email
{
    string emailFrom = "senderemail@gmail.com";
    string password = "yourpassword";        
    string smtpServer = "smtp.gmail.com";
    int port = 587;

    public void sendEmail(string emailTo, string subject, string body)
    {
        MailMessage msg = new MailMessage();
        msg.From = new MailAddress(emailFrom);
        msg.To.Add(emailTo);
        msg.Subject = subject;
        msg.Body = body;
        SmtpClient sc = new SmtpClient(smtpServer);
        sc.Port = port;
        sc.Credentials = new NetworkCredential(emailFrom, password);
        sc.EnableSsl = true;
        sc.Send(msg);
    }
}

在DOT.NET世界中,异步调用可以通过多种方式完成,如AJAX、AsyncHandler等

在这里,您可以使用“BackgroundWorker”


希望这对您有所帮助…

在您的情况下,您可以使用threding尝试以下代码

var timer = new System.Threading.Timer((e) =>
{
    sendEmail(string emailTo, string subject, string body);   
}, null, 0, TimeSpan.FromMinutes(5).TotalMilliseconds);

希望这对你有帮助。

你可以用它来做这份工作。另请阅读Scott Hanselman的文章。它也可以与C#后端一起使用吗@PawełHemperekIt只能与C#后端一起使用。仔细阅读这些链接,你会很高兴去的!我在用ASP.net和C#@PawełHemperekWell,好的。那又怎样?有没有具体的原因让后台工作程序保留在CacheManager中,而不是使其成为静态的?
var timer = new System.Threading.Timer((e) =>
{
    sendEmail(string emailTo, string subject, string body);   
}, null, 0, TimeSpan.FromMinutes(5).TotalMilliseconds);