Files
NebulaLauncher/Nebula.Shared/Models/ILoadingHandler.cs
2025-01-08 18:00:06 +03:00

47 lines
925 B
C#

namespace Nebula.Shared.Models;
public interface ILoadingHandler
{
public void SetJobsCount(int count);
public int GetJobsCount();
public void SetResolvedJobsCount(int count);
public int GetResolvedJobsCount();
public void AppendJob(int count = 1)
{
SetJobsCount(GetJobsCount() + count);
}
public void AppendResolvedJob(int count = 1)
{
SetResolvedJobsCount(GetResolvedJobsCount() + count);
}
public void Clear()
{
SetResolvedJobsCount(0);
SetJobsCount(0);
}
public QueryJob GetQueryJob()
{
return new QueryJob(this);
}
}
public sealed class QueryJob: IDisposable
{
private readonly ILoadingHandler _handler;
public QueryJob(ILoadingHandler handler)
{
_handler = handler;
handler.AppendJob();
}
public void Dispose()
{
_handler.AppendResolvedJob();
}
}