WPF中的文本消息之间的延迟

时间:2016-02-19 18:30:25

标签: c# wpf timer

我目前正在处理一个用户表单,并且在我打算这样做时遇到任何类型的延迟问题。我通过多个文本框检查程序并在列表框中显示消息。程序设置文本框的背景颜色以匹配消息的颜色。这一切都很好,但所有消息都会立即显示。我希望在显示下一个消息之前暂停每个消息。我尝试过使用计时器,它会在显示第一条消息之前等待,但是在计时器到期后会立即显示所有消息。我尝试使用延迟,但消息将同时出现。我也试过睡眠,但由于这是一个线程,它将睡眠整个线程,然后唤醒并立即显示所有消息。无论我尝试什么消息都同时显示。

从我创建的空白中调用消息:

public void writeMessage(TextBox messageBox, string message, Color messageColor)
    {
    Brush colorBrush = new SolidColorBrush(messageColor);
    messageBox.Background = colorBrush;
    if (statusList.Items.Count == 0)
    {
        list = new List<listColor>();
        list.Add(new listColor(message, new SolidColorBrush(messageColor)));
    }
    else
    {
        list = ((IEnumerable<listColor>)statusList.ItemsSource).ToList();
        if (!list[list.Count - 1].StatusItem.Equals(message))
        {
             list.Add(new listColor(message, new SolidColorBrush(messageColor)));
        }
    }
    statusList.ItemsSource = list;
    statusList.Items.Refresh();
    statusList.ScrollIntoView(statusList.Items[statusList.Items.Count - 1]);            
    }

点击我的按钮,我多次调用上述空格,即

writeMessage(textBox1, "Error!", Colors.Red);
writeMessage(textBox2, "Warning!", Colors.Blue);

我尝试将计时器和延迟添加到writeMessage void中,但它不会将消息空出来。任何人都有任何关于如何在writeMessage void中添加2秒暂停的想法或提示,这样每次调用它都会等待2秒再继续吗?

1 个答案:

答案 0 :(得分:2)

您的用户界面中发生的事情并不完全清楚,但是......如果您使用的是.NET 4.5,那么您应该能够做到这样的事情:< / p>

  I/System.out: User interests: []
  I/System.out: returned list: []
  I/System.out: Object check: coffee    
  I/System.out: Object check: computers
  I/System.out: Object check: bees
  I/System.out: Object check: table

包含方法必须标记为writeMessage(textBox1, "Error!", Colors.Red); await Task.Delay(1000); writeMessage(textBox2, "Warning!", Colors.Blue);

您也可以从这里遵循MVVM模式中受益。考虑如何使用绑定,可观察集合和数据模板。