private void AddLayer() { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Векторный рисунок (*.svg)|*.svg"; if (ofd.ShowDialog() == true) { BusyContent = "Загрузка карты"; IsBusy = true; BackgroundWorker worker = new BackgroundWorker(); worker.RunWorkerCompleted += (s, e) => { IsBusy = false; if (e.Error != null) { MessageBox.Show("При создании слоя возникла ошибка:\r\n" + e.Error.ToString()); return; } var newLayer = (LayerViewModel)e.Result; Layers.Add(newLayer); SelectedLayer = newLayer; }; worker.DoWork += (s, e) => { using (StreamReader sr = new StreamReader(ofd.FileName)) { string content = sr.ReadToEnd(); using (Enviroment.IO.MapReader reader = new Enviroment.IO.MapReader(content)) { if (reader.Read()) { var layer = new LayerViewModel(reader.MapSource, "Новый слой", 1.0D); e.Result = layer; } } } }; worker.RunWorkerAsync(); } }