private void Refresh(ThreadExecuteTask threadExecute) { try { DataRow[] childRows = this.mainForm.symbolDataSet.LocalizedSymbol.Select("CategoryId=" + this.currentCategoryId, "[Name] ASC"); ListViewItem[] items = new ListViewItem[childRows.Length]; for (int i = 0; i < items.Length; i++) { items[i] = new ListViewItem(); items[i].Text = childRows[i]["Name"] as string; items[i].Tag = childRows[i]; } this.mainForm.Invoke(this.mainForm.addSymbolListRangeDelegate, new object[] { items }); for (int i = 0; i < items.Length; i++) { //If an abort has been requested, we should quit if (this.threadExecute.State == ThreadExecuteTask.ProcessingState.requestAbort) { threadExecute.setProcessingState(ThreadExecuteTask.ProcessingState.aborted); Debug.WriteLine("aborted"); return; } DataRow row = childRows[i]; byte[] image = row["Image"] as byte[]; Image img = null; if (image != null) { using (MemoryStream ms = new MemoryStream(image)) { img = new Bitmap(ms); } } this.mainForm.Invoke(this.mainForm.updateSymbolListItemDelegate, new object[] { items[i], img }); } } catch (Exception e) { Debug.WriteLine(e); } if (this.RefreshFinished != null) { this.RefreshFinished(); } }
private void LoadData(ThreadExecuteTask threadExecute) { try { this.symbolList.Clear(); for (int i = 0; i < countPerPage; i++) { //If an abort has been requested, we should quit if (threadExecute != null && threadExecute.State == ThreadExecuteTask.ProcessingState.requestAbort) { threadExecute.setProcessingState(ThreadExecuteTask.ProcessingState.aborted); System.Windows.Forms.MessageBox.Show("aborted"); return; } bool ok; if (i == 0) { ok = this.resultSet.ReadAbsolute(this.firstRecordindex); Debug.Assert(ok, "Failed to seek to position: " + this.firstRecordindex); } else { ok = resultSet.Read(); } if (ok) { SymbolInfo info = new SymbolInfo(); info.Id = resultSet.GetInt32(0); object image = resultSet.GetValue(1); using (MemoryStream ms = new MemoryStream(image as byte[])) { info.Image = ResizeImage(new Bitmap(ms), this.imageSize); } info.Sound = resultSet.GetValue(2) as byte[]; info.Text = resultSet.GetString(3); symbolList.Add(info); } else { break; } } } catch (Exception e) { Debug.WriteLine(e); } if (this.DataLoaded != null) { this.DataLoaded(); } }