程序用于计数txt文件中的单词。 我有两种形式。 Form1是关于选择文件和单词的。那些传递给form2的数据将在其中启动GUI计时器和用于计数单词的算法。但是算法的执行速度比加载GUI计时器快。
private void Form2_Load(object sender, EventArgs e)
{
CountWords();
}
答案 0 :(得分:1)
不是使用CountWords阻止UI线程,而是使用Threadpool在后台线程上运行此方法
private void Form2_Load(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(
new WaitCallback(CountWords));
}
然后,确保将对UI控件的所有调用编组回您从后台线程进行的UI线程:
foreach (KeyValuePair<string, int> word in words)
{
// Need to marshal this back onto the UI thread
var itemToAdd = word.Key + " " + word.Value + "x";
this.BeginInvoke(new Action<string>(AddItemToListView), itemToAdd);
}
然后我们的AddItemToListView方法将该项添加到UI线程上:
private void AddItemToListView(string item)
{
listView1.Items.Add(item);
}