Skip to main content
 首页 » 编程设计

c#之C#4.0任务库死锁

2024年01月18日25开发

我正在尝试以下代码:

        foreach (var r in _vm.Rules.Take(20)) { 
            Task.Factory.StartNew(() => { 
                new SQLRuleSerializer().SaveRule(_vm.SelectedKey, r); 
            });              
        } 


错误:


  事务(进程ID 600)已在另一个进程的锁定资源上死锁,并且已被选择为死锁受害者。重新运行事务。


考虑到我没有任何显式锁,我不确定这到底是怎么死锁的。我猜问题是串行器是代理,即使通过单独的实例也不能并行调用?

请您参考如下方法:

事务(进程ID 600)已在另一个进程的锁定资源上死锁,并且已被选择为死锁受害者。重新运行事务。


死锁来自SQL Server,而不是C#代码。