@Andreas Hassmann,我遇到了类似的问题,所以我猜你的问题可能是由...
foreach 循环引起的。
我使用了一个迭代器,例如Global.LocalStorage.xxxCell_Accessor_Selector().Select(c => c.CellID.Value)
. 在这种情况下,存储的锁还没有被释放,导致在Global.LocalStorage.LoadCell()
获取锁时出现死锁。
如果您的问题与我的问题完全相同,则解决方案将应用于.ToList()
迭代器。
这是我的代码来重现您的问题。
TSL:
cell struct MyCell
{
int A;
}
代码:
for (int i = 0; i < 100; i++)
{
MyCell mc = new MyCell(i);
Global.LocalStorage.SaveMyCell(i, mc);
}
var ids = Global.LocalStorage.MyCell_Accessor_Selector().Select(c => c.CellID.Value);
Console.WriteLine("1 start.");
foreach (long cellID in ids.ToList())
{
byte[] buffer;
Global.LocalStorage.LoadCell(cellID, out buffer);
Console.WriteLine(cellID);
}
Console.WriteLine("1 done.");
Console.WriteLine("2 start.");
foreach (long cellID in ids)
{
byte[] buffer;
Global.LocalStorage.LoadCell(cellID, out buffer);
Console.WriteLine(cellID);
}
Console.WriteLine("2 done.");