Exemplo n.º 1
0
        private async Task OnLayerRemovingAsync(LayersRemovingEventArgs e)
        {
            // todo daro: revise usage of Task
            //await Task.Run(() =>
            //{
            foreach (IWorkList workList in _layerByWorkList
                     .Where(pair => e.Layers.Contains(pair.Value))
                     .Select(pair => pair.Key).ToList())
            {
                foreach (var observer in _observers)
                {
                    observer.WorkListRemoved(workList);
                }

                List <WorkListObserver> emptyObservers = GetEmptyObservers();

                foreach (var observer in emptyObservers)
                {
                    UnregisterObserver(observer);
                }

                await QueuedTask.Run(() =>
                {
                    // ensure folder exists before commit
                    EnsureFolderExists(GetLocalWorklistsFolder());

                    workList.Commit();

                    UnwireEvents(workList);

                    //UnregisterViewModel(workList);

                    _layerByWorkList.Remove(workList);
                    _registry.Remove(workList);

                    // Note daro: don't dispose work list here. Given the following situation.
                    // Remove work list layer would dispose the source geodatabase (in GdbItemRepository).
                    // Add work list layer again with same source geodatabase is going to throw an
                    // exception, e.g. on SetStatus
                    //workList.Dispose();
                });
            }
            //});
        }
Exemplo n.º 2
0
        private async Task OnLayerRemovingAsync(LayersRemovingEventArgs e)
        {
            await Task.Run(() =>
            {
                foreach (IWorkList worklist in GetAssociatedWorklists(e.Layers))
                {
                    Unload(worklist);

                    // persist work list state
                    worklist.Commit();

                    // Note daro: don't dispose work list here. Given the following situation.
                    // Remove work list layer would dispose the source geodatabase (in GdbItemRepository).
                    // Add work list layer again with same source geodatabase is going to throw an
                    // exception, e.g. on SetStatus
                    //workList.Dispose();
                }
            });
        }