fix: 收敛旧模块资源释放与诊断
This commit is contained in:
@@ -32,6 +32,43 @@ namespace Lskj.Control.Model
|
||||
public class GridDragGrid : IDisposable
|
||||
{
|
||||
private bool _disposed;
|
||||
|
||||
internal static void DisposeRegistrations(
|
||||
Dictionary<GridView, List<GridDragGrid>> sourceRegistrations,
|
||||
Dictionary<GridView, List<GridDragGrid>> targetRegistrations,
|
||||
GridView gridView)
|
||||
{
|
||||
DisposeRegistrations(sourceRegistrations, gridView);
|
||||
DisposeRegistrations(targetRegistrations, gridView);
|
||||
}
|
||||
|
||||
private static void DisposeRegistrations(
|
||||
Dictionary<GridView, List<GridDragGrid>> registrations,
|
||||
GridView gridView)
|
||||
{
|
||||
foreach (KeyValuePair<GridView, List<GridDragGrid>> entry in registrations.ToList())
|
||||
{
|
||||
bool removeKey = ReferenceEquals(entry.Key, gridView);
|
||||
foreach (GridDragGrid registration in entry.Value.ToList())
|
||||
{
|
||||
if (removeKey || registration == null || registration._disposed || registration.References(gridView))
|
||||
{
|
||||
if (registration != null)
|
||||
registration.Dispose();
|
||||
entry.Value.Remove(registration);
|
||||
}
|
||||
}
|
||||
if (removeKey || entry.Value.Count == 0)
|
||||
registrations.Remove(entry.Key);
|
||||
}
|
||||
}
|
||||
|
||||
internal bool References(GridView gridView)
|
||||
{
|
||||
return gridView != null &&
|
||||
(ReferenceEquals(_sourceGridView, gridView) ||
|
||||
ReferenceEquals(_targetGridView, gridView));
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否正在拖拽
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user