private void LoadMusic(string MusicDBFileName) { Grid LoadGrid = new Grid(); Rectangle LoadRect = new Rectangle() { Margin = new Thickness(0) }; LoadRect.SetResourceReference(Rectangle.FillProperty, "LoadingBackground"); LoadGrid.Children.Add(LoadRect); Label LoadLabel = new Label() { Margin = new Thickness(0), HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, Content = "Загрузка спектакля", FontSize = ScaleTo(48.0), FontWeight = FontWeights.Bold, }; LoadLabel.SetResourceReference(Label.ForegroundProperty, "Foreground"); LoadGrid.Children.Add(LoadLabel); Grid.SetRow(LoadGrid, 0); Grid.SetRowSpan(LoadGrid, 3); Grid.SetColumn(LoadGrid, 0); Grid.SetColumnSpan(LoadGrid, 2); MainGrid.Children.Add(LoadGrid); Thread.SpinWait(100); Loading = true; Dispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(delegate() { MusicDB MDB = null; MDB = new MusicDB(System.IO.Path.GetFullPath(System.IO.Path.Combine( Config.GetConfigValue("MusicDir"), System.IO.Path.ChangeExtension(MusicDBFileName, ".sdb")))); SpNameLabel.Content = MDB.Name; LoadSDB(MDB, SpNameLabel, MusicDBFileName, Channels); MainGrid.Children.Remove(LoadGrid); Loading = false; })); }
private void LoadSDB(MusicDB MDB, Label NameLabel, string MusicDBFileName, Desk[] Channel) { Task <List <MusicTrack> >[] LoadDesks = new Task <List <MusicTrack> > [Channels.Length]; for (int i = 0; i < Channels.Length; i++) { int j = i; LoadDesks[i] = Task.Run(() => { return(MDB.LoadDesk(Channel[j].DeskN)); }); } Task.WaitAll(LoadDesks); for (int i = 0; i < Channels.Length; i++) { Channel[i].LoadTrackList(LoadDesks[i].Result); } switch (DeskCount) { case 1: Grid.SetColumnSpan(Desk1, 6); Desk2.Visibility = Visibility.Collapsed; Desk3.Visibility = Visibility.Collapsed; break; case 2: Grid.SetColumnSpan(Desk1, 3); Grid.SetColumnSpan(Desk2, 3); Grid.SetColumn(Desk2, 3); Desk2.Visibility = Visibility.Visible; Desk3.Visibility = Visibility.Collapsed; break; case 3: Grid.SetColumnSpan(Desk1, 2); Grid.SetColumnSpan(Desk2, 2); Grid.SetColumnSpan(Desk3, 2); Grid.SetColumn(Desk2, 2); Grid.SetColumn(Desk3, 4); Desk2.Visibility = Visibility.Visible; Desk3.Visibility = Visibility.Visible; break; } }