private async void lstItems_SelectedIndexChanged(object sender, EventArgs e) { if (_blnSkipRefresh) { return; } try { using (await CursorWait.NewAsync(this, token: _objGenericToken)) { if (await lstItems.DoThreadSafeFuncAsync(x => x.SelectedValue, _objGenericToken) is MasterIndexEntry objEntry) { await Task.WhenAll( lblSourceLabel.DoThreadSafeAsync(x => x.Visible = true, _objGenericToken), lblSourceClickReminder.DoThreadSafeAsync(x => x.Visible = true, _objGenericToken), objEntry.DisplaySource.SetControlAsync(lblSource, _objGenericToken)); (bool blnSuccess, Task <string> tskNotes) = await _dicCachedNotes.TryGetValueAsync(objEntry, _objGenericToken); if (!blnSuccess) { if (!GlobalSettings.Language.Equals(GlobalSettings.DefaultLanguage, StringComparison.OrdinalIgnoreCase) && (objEntry.TranslatedNameOnPage != objEntry.EnglishNameOnPage || objEntry.Source.Page != objEntry.DisplaySource.Page)) { // don't check again it is not translated tskNotes = Task.Run(async() => { string strReturn = await CommonFunctions.GetTextFromPdfAsync( objEntry.Source.ToString(), objEntry.EnglishNameOnPage); if (string.IsNullOrEmpty(strReturn)) { strReturn = await CommonFunctions.GetTextFromPdfAsync( objEntry.DisplaySource.ToString(), objEntry.TranslatedNameOnPage); } return(strReturn); }, _objGenericToken); } else { tskNotes = Task.Run(() => CommonFunctions.GetTextFromPdfAsync( objEntry.Source.ToString(), objEntry.EnglishNameOnPage), _objGenericToken); } await _dicCachedNotes.TryAddAsync(objEntry, tskNotes, _objGenericToken); } string strNotes = await tskNotes; await txtNotes.DoThreadSafeAsync(x => { x.Text = strNotes; x.Visible = true; }, _objGenericToken); } else { await Task.WhenAll( lblSourceLabel.DoThreadSafeAsync(x => x.Visible = false, _objGenericToken), lblSourceClickReminder.DoThreadSafeAsync(x => x.Visible = false, _objGenericToken), SourceString.Blank.SetControlAsync(lblSource, _objGenericToken), txtNotes.DoThreadSafeAsync(x => x.Visible = false, _objGenericToken)); } } } catch (OperationCanceledException) { //swallow this } }
private async void lstItems_SelectedIndexChanged(object sender, EventArgs e) { if (_blnSkipRefresh) { return; } using (CursorWait.New(this)) { if (lstItems.DoThreadSafeFunc(x => x.SelectedValue) is MasterIndexEntry objEntry) { await lblSourceLabel.DoThreadSafeAsync(x => x.Visible = true); await lblSource.DoThreadSafeAsync(x => x.Visible = true); await lblSourceClickReminder.DoThreadSafeAsync(x => x.Visible = true); await lblSource.DoThreadSafeAsync(x => x.Text = objEntry.DisplaySource.ToString()); await lblSource.DoThreadSafeAsync(x => x.ToolTipText = objEntry.DisplaySource.LanguageBookTooltip); (bool blnSuccess, Task <string> tskNotes) = await _dicCachedNotes.TryGetValueAsync(objEntry); if (!blnSuccess) { if (!GlobalSettings.Language.Equals(GlobalSettings.DefaultLanguage, StringComparison.OrdinalIgnoreCase) && (objEntry.TranslatedNameOnPage != objEntry.EnglishNameOnPage || objEntry.Source.Page != objEntry.DisplaySource.Page)) { // don't check again it is not translated tskNotes = Task.Run(async() => { string strReturn = await CommonFunctions.GetTextFromPdfAsync(objEntry.Source.ToString(), objEntry.EnglishNameOnPage); if (string.IsNullOrEmpty(strReturn)) { strReturn = await CommonFunctions.GetTextFromPdfAsync( objEntry.DisplaySource.ToString(), objEntry.TranslatedNameOnPage); } return(strReturn); }); } else { tskNotes = Task.Run(() => CommonFunctions.GetTextFromPdfAsync(objEntry.Source.ToString(), objEntry.EnglishNameOnPage)); } await _dicCachedNotes.TryAddAsync(objEntry, tskNotes); } string strNotes = await tskNotes; await txtNotes.DoThreadSafeAsync(x => x.Text = strNotes); await txtNotes.DoThreadSafeAsync(x => x.Visible = true); } else { await lblSourceLabel.DoThreadSafeAsync(x => x.Visible = false); await lblSource.DoThreadSafeAsync(x => x.Visible = false); await lblSourceClickReminder.DoThreadSafeAsync(x => x.Visible = false); await txtNotes.DoThreadSafeAsync(x => x.Visible = false); } } }