コード例 #1
0
        /// <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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 /// <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;
     }
 }