리크 테스트 gui
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

82 lines
3.5 KiB

using System;
using System.IO;
namespace Housing.Services
{
public class LoginSettings
{
public bool OfflinePreview { get; set; } = true; // 기본값은 오프라인 테스트 편의를 위해 true
public string Procedure { get; set; } = string.Empty;
public string ProcessName { get; set; } = string.Empty;
private static readonly object _loginLock = new object();
private static LoginSettings _cachedSettings;
private static DateTime _lastWriteTime;
private static string _cachedPath;
public static LoginSettings Load(string path)
{
lock (_loginLock)
{
try
{
if (File.Exists(path))
{
var currentWriteTime = File.GetLastWriteTime(path);
if (_cachedSettings != null && _cachedPath == path && _lastWriteTime == currentWriteTime)
{
return _cachedSettings;
}
var settings = new LoginSettings();
var lines = File.ReadAllLines(path);
foreach (var line in lines)
{
var trimmed = line.Trim();
if (trimmed.StartsWith("OfflinePreview", StringComparison.OrdinalIgnoreCase))
{
var parts = trimmed.Split(new[] { '=' }, 2);
if (parts.Length == 2)
{
if (bool.TryParse(parts[1].Trim(), out var val))
{
settings.OfflinePreview = val;
}
else if (int.TryParse(parts[1].Trim(), out var intVal))
{
settings.OfflinePreview = intVal != 0;
}
}
}
else if (trimmed.StartsWith("Procedure", StringComparison.OrdinalIgnoreCase))
{
var parts = trimmed.Split(new[] { '=' }, 2);
if (parts.Length == 2)
{
settings.Procedure = parts[1].Trim();
}
}
else if (trimmed.StartsWith("ProcessName", StringComparison.OrdinalIgnoreCase))
{
var parts = trimmed.Split(new[] { '=' }, 2);
if (parts.Length == 2)
{
settings.ProcessName = parts[1].Trim();
}
}
}
_cachedSettings = settings;
_lastWriteTime = currentWriteTime;
_cachedPath = path;
return settings;
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"[LoginSettings Load Error] {ex.Message}");
}
return _cachedSettings ?? new LoginSettings();
}
}
}
}