0

我正在运行一个控制台应用程序。我在表单中有一个文本框。我需要计算最近五分钟在另一个班级中阅读的消息数,并在文本框中显示该值。当我运行代码时,我可以正确地看到 textbox.text 值。但在 UI 中,我看不到文本框中显示的值。但我可以在运行时手动编辑文本框。

这是我的代码:

在代码隐藏中

for (int i = 1; i <= numberOfMsgs; i++)
{
    if (addDateTime.AddMinutes(2).Minute==DateTime.Now.Minute)
    {
        //FilesProcessedInFiveMinutes();
        //Thread thread1 = new Thread(new ThreadStart(FiveMinutesMessage));
        //thread1.Start();
        WebSphereUI webSphereUi = new WebSphereUI();
        webSphereUi.count(fiveMinutesCount);
        addDateTime = DateTime.Now;
    }
    fiveMinutesCount = fiveMinutesCount + 1;
}

在 form.cs 中

public void count(int countValue)
{
    Thread.Sleep(2000);
    txtLastFiveMins.Focus();
    txtLastFiveMins.Text = countValue.ToString();
    txtLastFiveMins.Refresh();
    txtLastFiveMins.Show();
    backgroundWorker1.RunWorkerAsync(2000);
}
4

1 回答 1

0

每次输入 if 语句时,您似乎都在创建一个新表单。此行正在创建一个新WebSphereUI表单:

    WebSphereUI webSphereUi = new WebSphereUI();

然后,你调用count它的方法:

    webSphereUi.count(fiveMinutesCount);

但是然后你继续前进,而不显示这种形式。如果添加:

    webSphereUi.Show();

然后您可能会看到屏幕上出现表单,并按预期显示值。但是,每次执行 if 语句时都会显示一个新形式。您可以通过在其他地方声明并在循环中使用它来重用相同的表单:

class yourClass
{

    WebSphereUI webSphereUi = new WebSphereUI();

    ...

    private void yourFunction()
    {
        for (int i = 1; i <= numberOfMsgs; i++)
        {
            if (addDateTime.AddMinutes(2).Minute==DateTime.Now.Minute)
            {
                webSphereUi.count(fiveMinutesCount);
                webSphereUi.Show();
                addDateTime = DateTime.Now;
            }
            fiveMinutesCount = fiveMinutesCount + 1;
        }
    }

}
于 2013-04-03T13:33:23.520 回答