コード例 #1
0
        internal static async ValueTask LoadAsync(IStringLocalizer localizer, bool loadParentCulture)
        {
            JsonStringLocalizerAsync?stringLocalizer;

            Task loadingTask;

            lock (PendingAsyncLocalizers)
            {
                var guid = localizer[nameof(stringLocalizerGuid)].Value;
                if (!PendingAsyncLocalizers.TryGetValue(guid, out stringLocalizer))
                {
                    if (!LoadingTasks.TryGetValue(guid, out loadingTask))
                    {
                        return;
                    }

                    if (loadingTask.Status == TaskStatus.RanToCompletion)
                    {
                        LoadingTasks.Remove(guid);
                    }
                }
                else
                {
                    loadingTask = stringLocalizer.LoadDataAsync(loadParentCulture).AsTask();

                    LoadingTasks.Add(guid, loadingTask);
                    PendingAsyncLocalizers.Remove(guid);
                }
            }
            await loadingTask.ConfigureAwait(false);
        }