小编bar*_*777的帖子

ASP.NET Web窗体和MySql实体框架:"不支持嵌套事务"

我有一个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)

.net c# mysql asp.net entity-framework

4
推荐指数
1
解决办法
2048
查看次数

如何处理/杀死C#中的锁定线程

我已经看到很多关于如何杀死锁定线程的问题,我看到的每个答案都说不会杀死线程,甚至不使用Thread.Abort,只需使用良好的编程习惯来处理线程应该停止的时候.

我的问题是,我被困在使用一个我无法控制的旧第三方库,并且偶尔会锁定,使用相当多的100%CPU并且永不放弃.Thread.Abort不会阻止这一点.我找不到任何办法阻止这一点.

我找到的最好的"解决方法"是使用委托和.AsyncWaitHandle.WaitOne(10000,false);

代码将在超时后从这一点继续,但仍然运行的任何线程继续运行并耗尽我的所有CPU.

我该如何处理这种情况?如果这个第三方库锁定,我需要一种方法来杀死它.

谢谢你的时间,本

c# multithreading thread-safety

2
推荐指数
1
解决办法
525
查看次数