我有一个函数,它有一个循环,在每个循环结束时休眠 6 秒
Thread.Sleep(TimeSpan.FromSeconds(6));
这循环 10 次,即函数运行 60 秒,每次暂停 6 秒。
我在循环开始时进行了身份验证测试
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
return null;
}
所以每次它首先进行身份验证然后运行并等待 6 秒。
这是我的功能:
while (counter < 10)
{
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
return null;
}
// doing stuff
Thread.Sleep(TimeSpan.FromSeconds(6));
counter++;
}
现在用户同时注销(比如在第 15 秒)。我使用 ajax 注销,因此不想重定向我的页面。即使在注销后 IsAuthenticated 对于所有 10 个循环始终为 true,并且仅在重新执行此函数时才为 false
对于注销我使用:
FormsAuthentication.SignOut();
Session.Abandon();
Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
HttpCookie cookie = HttpContext.Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
cookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(cookie);
}
但它仍然是真的.. 我想在用户注销后立即停止执行我的线程