/// <inheritdoc/> protected async ValueTask DisposeAsyncCore() { foreach (var invoker in JSInvokers) { if (invoker.Value.IsValueCreated) { Logger.LogInformation($"Dispose JS invoker: {invoker.Key}."); var value = await invoker.Value.Value.ConfigureAwait(false); await value.DisposeAsync().ConfigureAwait(false); } } JSInvokers.Clear(); }
public Task <IJSObjectReference> GetJSModule(string jsPath, string?assemblyName = null, CancellationToken cancellationToken = default) { if (assemblyName is null) { assemblyName = typeof(T).Assembly.GetName().Name ?? ""; } string id = $"{assemblyName}/{jsPath}"; if (!JSInvokers.ContainsKey(id)) { Logger.LogInformation($"Create JS invoker: {id}."); JSInvokers.Add(id, new(() => JSRuntime.InvokeAsync <IJSObjectReference>("import", cancellationToken, $"./_content/{id}").AsTask())); } return(JSInvokers[id].Value); }
/// <inheritdoc/> protected void Dispose(bool disposing) { if (!_disposedValue) { if (disposing) { foreach (var invoker in JSInvokers) { if (invoker.Value.IsValueCreated) { Logger.LogInformation($"Dispose JS invoker: {invoker.Key}."); (invoker.Value.Value as IDisposable)?.Dispose(); } } JSInvokers.Clear(); } _disposedValue = true; } }