我对应用程序启动时运行的长时间运行任务有一些疑问。我创建了一个线程,当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 我们也可以取消这个任务吗?
我们是否需要取消任务,因为当应用程序 End 或 Stop 时。此任务不会自动取消或中止。因为应用程序已结束/已完成。
有人可以指导我如何处理这种情况吗?任何帮助将不胜感激。