我目前正在处理一个用户表单,并且在我打算这样做时遇到任何类型的延迟问题。我通过多个文本框检查程序并在列表框中显示消息。程序设置文本框的背景颜色以匹配消息的颜色。这一切都很好,但所有消息都会立即显示。我希望在显示下一个消息之前暂停每个消息。我尝试过使用计时器,它会在显示第一条消息之前等待,但是在计时器到期后会立即显示所有消息。我尝试使用延迟,但消息将同时出现。我也试过睡眠,但由于这是一个线程,它将睡眠整个线程,然后唤醒并立即显示所有消息。无论我尝试什么消息都同时显示。
从我创建的空白中调用消息:
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秒再继续吗?
答案 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模式中受益。考虑如何使用绑定,可观察集合和数据模板。