我有一些关于应用程序启动时运行的长时间运行任务的问题。我创建了一个线程,当asp.net应用程序在Global.asax(Application_Start)中启动时运行,并且我在Global.asax(Application_End)中删除线程
我想用My Task替换线程。我这样做了
线程实现
t = new Thread(new ThreadStart(() =>
CheckConnection(emailTo, emailSubject, emailBody)));
t.Start();
_logger.Info("DB Monitor Thread Started ThreadID: " + t.ManagedThreadId);
任务实施
Task.Factory.StartNew(
state =>
{
System.Web.HttpContext.Current = (HttpContext)state;
CheckConnection(emailTo, emailSubject, emailBody);
},
System.Web.HttpContext.Current );
基本检查连接方法在设置间隔后检查SQl服务器是否为实时和运行,如果失败则发送电子邮件。我的问题是
检查连接实施
while (true)
{
Thread.Sleep(600000);
using (EntityFMContextctx = new EntityFMContext())
{
try
{
ctx.Connection.Open();
}
catch (EntityException ex)
{
SendEmail(to, subject, body, ex);
}
}
}
问题:
我怎么能像Thread.Abort一样取消这个任务呢?我们也可以取消这个任务吗?
我们需要取消任务,因为当应用程序结束或停止时。没有这个任务将被取消或自动中止。因为申请是结束/完成。
有人可以指导我如何处理这种情况。非常感谢。