private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
while (true)
{
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
else
{
string content = downloadContent();
GetProfileNames(content);
GetTextFromProfile(content);
for (int i = 0; i < names.Count; i++)
{
namesAndTexts.Add(names[i] + " " + texts[i]);
}
if (InvokeRequired)
{
for (int f = 0; f < namesAndTexts.Count -1; f++)
{
BeginInvoke(new Action(() => textBox1.AppendText(namesAndTexts[f])), null);
}
}
reader.Close();
response.Close();
Thread.Sleep(1000);
}
}
}
我试过这部分:
if (InvokeRequired)
{
for (int f = 0; f < namesAndTexts.Count -1; f++)
{
BeginInvoke(new Action(() => textBox1.AppendText(namesAndTexts[f])), null);
}
}
但它不能很好地继续将列表一遍又一遍地添加到文本框中。我想在文本框中看到它:
丹尼尔你好
亚龙再见
丹尼·古德
而且只有一次。
另一件事是,如果在 For im 没有做namesAndTexts.Count - 1
但是namesAndTexts.Count
它抛出错误异常 namesAndTexts[f] 索引不应该小于零但小于列表....
在这将起作用之后,我需要检查列表是否已更改,并以某种方式在文本框中自动向上推,让我们说用线条将文本框填充到其大小,当它到达底部时开始向上滚动并继续更新新行从底部abnd将旧的从顶部向上推。
我该怎么做?