using Microsoft.JSInterop;
|
|
namespace HotelPms.Client.Blazor.Util
|
{
|
/// <summary>
|
/// 汎用待ち画面
|
/// </summary>
|
public class DefaultGlobalLoadingSpinner : IGlobalLoadingSpinner
|
{
|
static object Locker = new object();
|
int SpinnerCount = 1;
|
|
IJSRuntime _jsRuntime;
|
|
public DefaultGlobalLoadingSpinner(IJSRuntime jsRuntime)
|
{
|
_jsRuntime = jsRuntime;
|
}
|
|
public async Task ShowAsync()
|
{
|
EnvironmentSetting.Debug($"Locker Start:{DateTime.Now.ToString("HH:mm:ss fff")}");
|
lock (Locker)
|
{
|
SpinnerCount++;
|
}
|
|
EnvironmentSetting.Debug($"InvokeVoidAsync Start:{DateTime.Now.ToString("HH:mm:ss fff")}");
|
await this._jsRuntime.InvokeVoidAsync("NetCallJs.showGlobalLoadingSpinner"); //0.5秒
|
EnvironmentSetting.Debug($"InvokeVoidAsync End:{DateTime.Now.ToString("HH:mm:ss fff")}");
|
}
|
|
public async Task HideAsync()
|
{
|
lock (Locker)
|
{
|
SpinnerCount--;
|
if (SpinnerCount < 0)
|
{
|
SpinnerCount = 0;
|
}
|
}
|
|
if (SpinnerCount == 0)
|
{
|
await this._jsRuntime.InvokeVoidAsync("NetCallJs.hideGlobalLoadingSpinner");
|
}
|
}
|
|
public async Task HideLogoAsync()
|
{
|
await this._jsRuntime.InvokeVoidAsync("NetCallJs.hideGlobalLoadingSpinnerLogo");
|
}
|
}
|
}
|