public void AsyncPrefetchFontNames() { IFontMap fontMapP = this.fontMap.CreateRef(); Work.QueueWorkItem(delegate { try { string[] strArray = fontMapP.ToArrayEx <string>(); } catch (Exception) { } finally { fontMapP.Dispose(); } }); }
protected override void OnComboBoxGotFocus(object sender, EventArgs e) { if (!this.isPopulated) { this.isPopulated = true; using (new WaitCursorChanger(base.ComboBox)) { string selectedItem = (string)base.ComboBox.SelectedItem; string str2 = null; ManualResetEventSlim gotFamilies = new ManualResetEventSlim(false); string[] fontNames = null; VirtualTask <Unit> task = TaskManager.Global.CreateVirtualTask(TaskState.Running); IFontMap fontMapP = this.fontMap.CreateRef(); Work.QueueWorkItem(delegate { try { fontNames = fontMapP.ToArrayEx <string>(); } finally { fontMapP.Dispose(); try { gotFamilies.Set(); } finally { task.SetState(TaskState.Finished); } } }); if (!gotFamilies.Wait(0x3e8)) { new TaskProgressDialog { Task = task, CloseOnFinished = true, ShowCancelButton = false, Text = PdnInfo.BareProductName, Icon = PdnInfo.AppIcon, Text = PdnResources.GetString("TextConfigWidget.LoadingFontsList.Text") }.ShowDialog(base.ComboBox); } gotFamilies.Wait(); base.ComboBox.BeginUpdate(); base.ComboBox.Items.Clear(); foreach (string str3 in fontNames) { int num2 = base.ComboBox.Items.Add(str3); if ((selectedItem != null) && DirectWriteFactory.FontNameComparer.Equals(selectedItem, str3)) { str2 = str3; } } if (str2 != null) { base.ComboBox.SelectedItem = str2; } else { base.ComboBox.SelectedItem = this.defaultFontName; } base.ComboBox.EndUpdate(); } } base.OnComboBoxGotFocus(sender, e); }