Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使添加到文本框的文本只添加一次,而不是一直添加,因为它处于循环中?_C# - Fatal编程技术网

C# 如何使添加到文本框的文本只添加一次,而不是一直添加,因为它处于循环中?

C# 如何使添加到文本框的文本只添加一次,而不是一直添加,因为它处于循环中?,c#,C#,代码如下: private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; List<string> tempNamesAndTexts = new List<string>(); string tempDownload = downloadContent

代码如下:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
{
    BackgroundWorker worker = sender as BackgroundWorker; 
    List<string> tempNamesAndTexts = new List<string>();
    string tempDownload = downloadContent();
    GetProfileNames(tempDownload);
    GetTextFromProfile(tempDownload);
    for (int i = 0; i < names.Count; i++)
    {
        tempNamesAndTexts.Add(names[i] + " " + texts[i]);            
    }
    if (InvokeRequired)
    {
        BeginInvoke(new Action(() => tempNamesAndTexts.ForEach(Item => textBox1.AppendText(Item + Environment.NewLine))));
    }
    while (true)
    {
        namesAndTexts = new List<string>();
        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)
            {
                bool result = tempNamesAndTexts.SequenceEqual(namesAndTexts);
                if (result == true)
                {
                }
                else
                {
                    var t = namesAndTexts.Last();

                    if (textBox1.InvokeRequired)
                    {
                        BeginInvoke(new Action(() => textBox1.AppendText(t + Environment.NewLine)), null);
                        return;
                    }
                }
            }
            reader.Close();
            response.Close();
            Thread.Sleep(30000);
        }
    }
}

如果我要放一张票;或中断;它将不断地将变量t不间断地添加到文本框中。我只想添加一次。循环将继续,但变量t只会被添加一次。

希望我能很好地理解你的问题,听起来你只需要检查一下

if(string.IsNullOrEmpty(textBox1.Text)) //ADD NEW TEXT ONLY IF THERE IS NO ANY
  BeginInvoke(new Action(() => textBox1.AppendText(t + Environment.NewLine)), null);
没有
的循环将自然返回
,因此
while
循环将继续运行


如果这不是你想要的,请澄清

如果希望每次通过循环更新文本,则始终可以删除当前字符串的第一行,然后将剩余内容追加到(t+Environment.NewLine)中。不过,这是一个很大的割断。如果你想要一个计数器,你最好只添加一个进度条


如果这不是你想要的,那么我误解了你的问题。请澄清。

Tigran否我不想检查textBox1.Text是空的还是空的。我只想在IF条件为false时添加字符串变量t一次。这里有bool,如果你看到它,如果它为真,它什么也不做,如果它为假,它将输入并将变量T添加到textBox1。问题是,这个t变量在while(true)循环中,一旦出于某种原因将它添加到文本框中,它就会卡在那里,并且循环会不断地将变量t添加到文本框中,因此在文本框中看到例如stringt:“Hi All”有一次我会看到它不停地添加。我需要在bool如果为false但只有一次时,以某种方式将t添加到文本框中!同时也让循环继续下去。在这种情况下,因为它现在卡在这个t变量行中,并不断添加t变量的不间断时间ot文本框。修复了它。我很快就会在这个问题上发表我的解决方案。谢谢大家。
if(string.IsNullOrEmpty(textBox1.Text)) //ADD NEW TEXT ONLY IF THERE IS NO ANY
  BeginInvoke(new Action(() => textBox1.AppendText(t + Environment.NewLine)), null);