Files
Shrlalgo.RvKits/ShrlAlgoToolkit.RevitAddins/Assists/SingletonViewAssist.cs

37 lines
848 B
C#
Raw Normal View History

using System.Windows;
2026-02-20 15:31:44 +08:00
using ShrlAlgoToolkit.Core.Assists;
using ShrlAlgoToolkit;
using ShrlAlgoToolkit.Core;
namespace ShrlAlgoToolkit.RevitAddins.Assists;
2025-04-24 20:56:44 +08:00
public sealed record SingletonViewAssist<T>
where T : Window, new()
{
private static T _instance;
private static readonly object Padlock = new();
2025-04-24 20:56:44 +08:00
private SingletonViewAssist() { }
public static T GetInstance(out bool isNewCreate)
{
isNewCreate = false;
//double-check locking
if (_instance == null)
{
isNewCreate = true;
lock (Padlock)
{
_instance ??= new T();
_instance.Closed += OnWindowClosed;
}
}
return _instance;
}
private static void OnWindowClosed(object sender, EventArgs e)
{
_instance = null;
}
}