Ejemplo n.º 1
0
        public void NullKeys()
        {
            var john   = new TestPerson(null);
            var people = new SynchronizedObservableDictionary <string, TestPerson>();

            using var query = people.ToActiveDictionary((key, value) => new KeyValuePair <string, TestPerson>(value.Name !, value));
            Assert.IsNull(query.OperationFault);
            people.Add("John", john);
            Assert.IsNotNull(query.OperationFault);
            john.Name = "John";
            Assert.IsNull(query.OperationFault);
            john.Name = null;
            Assert.IsNotNull(query.OperationFault);
            people.Clear();
            Assert.IsNull(query.OperationFault);
        }
        public AddOnManager(DirectoryInfo storageDirectory, IWorldOfWarcraftInstallation worldOfWarcraftInstallation, SynchronizationContext synchronizationContext = null)
        {
            manifestsCheckTimer = new Timer(ManifestsCheckTimerCallback);

            WorldOfWarcraftInstallation = worldOfWarcraftInstallation;
            addOns = new SynchronizedObservableDictionary <Guid, AddOn>();
            addOnsWithUpdateAvailable = addOns.ActiveCount((addOnKey, addOn) => addOn.IsUpdateAvailable);
            addOnsWithUpdateAvailable.PropertyChanged  += AddOnsWithUpdateAvailablePropertyChanged;
            addOnsWithUpdateAvailable.PropertyChanging += AddOnsWithUpdateAvailablePropertyChanging;
            addOnsActiveEnumerable = addOns.ToActiveEnumerable();
            ManifestUrls           = new SynchronizedRangeObservableCollection <Uri>(DefaultManifestUrls);
            AddOns           = synchronizationContext == null ? addOnsActiveEnumerable : addOnsActiveEnumerable.SwitchContext(synchronizationContext);
            StorageDirectory = storageDirectory;
            if (StorageDirectory != null)
            {
                stateFile       = new FileInfo(Path.Combine(StorageDirectory.FullName, "addOnManagerState.json"));
                AddOnsDirectory = new DirectoryInfo(Path.Combine(StorageDirectory.FullName, "AddOnRepositories"));
            }

            initializationCompleteTaskCompletionSource = new TaskCompletionSource <object>();
            InitializationComplete = initializationCompleteTaskCompletionSource.Task;
            ThreadPool.QueueUserWorkItem(Initialize);
        }