private void FileReadDone(IAsyncResult result) { UpdateProgress("File read done"); FileStream inputStream = result.AsyncState as FileStream; if (inputStream != null) { inputStream.Close(); } // Начинаем асинхронный подсчет слов TokenCounter counter = new TokenCounter(Encoding.ASCII.GetString(_buffer)); counter.BeginCount(CountDone, counter); UpdateProgress("Counting tokens"); // Если мы хотим ждать завершения операции, нужно вызвать : counter.EndCount(counterResult); }
private void CountDone(IAsyncResult result) { UpdateProgress("Count done"); TokenCounter counter = result.AsyncState as TokenCounter; listViewTokens.Invoke(new MethodInvoker(() => { listViewTokens.BeginUpdate(); if (counter != null) { foreach (WordCount count in counter.WordCounts) { ListViewItem item = new ListViewItem(count.Word); item.SubItems.Add(count.Count.ToString("N0")); listViewTokens.Items.Add(item); } } listViewTokens.EndUpdate(); })); }