using Microsoft.JSInterop; namespace HotelPms.Client.Blazor.Util { /// /// 汎用待ち画面 /// 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"); } } }