我有一个ASP.NET Web表单应用程序,使用.Net Connector for MySql Entity Framework.
我以前使用MySql创建了一个Web应用程序,但从未遇到过这个问题.
我目前每天获得大约20000次页面浏览量,并且每天大约有10次"嵌套交易"错误不受支持.
我无法弄清楚它为什么会发生,为什么它只会偶尔发生一次.
在主页面预加载事件中,我获得用户的整数ID并将其保存到公共变量:
using (var entity = new Entities())
{
var user = entity.my_aspnet_users.Single(i => i.name == Context.User.Identity.Name);
UserID = user.id;
if (HttpContext.Current.Request.Url.AbsolutePath != "###" && HttpContext.Current.Request.Url.AbsolutePath != "###")
{
if (user.Player == null)
Response.Redirect("###", true);
else
PlayerID = user.Player.PlayerID;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在页面上:
using (var entity = new Entities())
if (entity.Players.Count(i => ###) == 1)
{
var user = entity.my_aspnet_users.Single(i => i.id == Master.UserID);
if (user.Player == null)
{
user.Player = entity.Players.Single(i …Run Code Online (Sandbox Code Playgroud) 我已经看到很多关于如何杀死锁定线程的问题,我看到的每个答案都说不会杀死线程,甚至不使用Thread.Abort,只需使用良好的编程习惯来处理线程应该停止的时候.
我的问题是,我被困在使用一个我无法控制的旧第三方库,并且偶尔会锁定,使用相当多的100%CPU并且永不放弃.Thread.Abort不会阻止这一点.我找不到任何办法阻止这一点.
我找到的最好的"解决方法"是使用委托和.AsyncWaitHandle.WaitOne(10000,false);
代码将在超时后从这一点继续,但仍然运行的任何线程继续运行并耗尽我的所有CPU.
我该如何处理这种情况?如果这个第三方库锁定,我需要一种方法来杀死它.
谢谢你的时间,本