/// <summary>
        /// Set List of Characters to print.
        /// </summary>
        public async Task SetCharacters(CancellationToken token = default, params Character[] lstCharacters)
        {
            token.ThrowIfCancellationRequested();
            IAsyncDisposable objLocker = await _lstCharacters.LockObject.EnterWriteLockAsync(token);

            try
            {
                token.ThrowIfCancellationRequested();
                foreach (Character objCharacter in _lstCharacters)
                {
                    objCharacter.PropertyChanged         -= ObjCharacterOnPropertyChanged;
                    objCharacter.SettingsPropertyChanged -= ObjCharacterOnSettingsPropertyChanged;
                }
                await _lstCharacters.ClearAsync();

                if (lstCharacters != null)
                {
                    await _lstCharacters.AddRangeAsync(lstCharacters);
                }
                foreach (Character objCharacter in _lstCharacters)
                {
                    objCharacter.PropertyChanged         += ObjCharacterOnPropertyChanged;
                    objCharacter.SettingsPropertyChanged += ObjCharacterOnSettingsPropertyChanged;
                }
            }
            finally
            {
                await objLocker.DisposeAsync();
            }

            await UpdateWindowTitleAsync(token);

            token.ThrowIfCancellationRequested();
            bool blnOldLoading = _blnLoading;

            try
            {
                _blnLoading = true;
                // Populate the XSLT list with all of the XSL files found in the sheets directory.
                await LanguageManager.PopulateSheetLanguageListAsync(cboLanguage, _strSelectedSheet, _lstCharacters);
                await PopulateXsltList(token);
                await RefreshCharacters(token);
            }
            finally
            {
                _blnLoading = blnOldLoading;
            }
        }
        /// <summary>
        /// Set List of Characters to print.
        /// </summary>
        public async ValueTask SetCharacters(params Character[] lstCharacters)
        {
            IAsyncDisposable objLocker = await _lstCharacters.LockObject.EnterWriteLockAsync();

            try
            {
                foreach (Character objCharacter in _lstCharacters)
                {
                    objCharacter.PropertyChanged -= ObjCharacterOnPropertyChanged;
                }

                await _lstCharacters.ClearAsync();

                if (lstCharacters != null)
                {
                    await _lstCharacters.AddRangeAsync(lstCharacters);
                }
                foreach (Character objCharacter in _lstCharacters)
                {
                    objCharacter.PropertyChanged += ObjCharacterOnPropertyChanged;
                }
            }
            finally
            {
                await objLocker.DisposeAsync();
            }

            bool blnOldLoading = _blnLoading;

            try
            {
                _blnLoading = true;
                // Populate the XSLT list with all of the XSL files found in the sheets directory.
                await LanguageManager.PopulateSheetLanguageListAsync(cboLanguage, _strSelectedSheet, _lstCharacters);
                await PopulateXsltList();
                await RefreshCharacters();
            }
            finally
            {
                _blnLoading = blnOldLoading;
            }
        }