我的应用程序中有一个用于显示消息的弹出窗口。有时,两条消息一个接一个显示得太快,而第二条则覆盖了第一条,使其消失得太快。
所以我想要的是下一条消息等待上一条消息关闭。我同时使用 aDispatcherTimer
和 MouseEvent 来关闭弹出窗口:
popupTimer.Interval = TimeSpan.FromSeconds(5d);
popupTimer.Tick += (sender, args) =>
{
popupMessage.IsOpen = false;
popupTimer.Stop();
};
popupMessage.MouseDown += (sender, args) =>
{
popupMessage.IsOpen = false;
popupTimer.Stop();
};
显示消息是这样完成的:
popupMessage.Dispatcher.Invoke(
() =>
{
popupMessage.IsOpen = true;
popupTimer.Start();
});
现在,如果我将以下循环放在显示委托中
while(popupMessage.IsOpen) {}
应用程序只是在其中挂起,而 IsOpen 永远不会变回 False,即使在等待 5 秒以使计时器用完之后也是如此。除此之外,我不喜欢使用这样的阻塞while循环。
有什么办法可以让我的消息互相等待吗?我尝试使用简单的布尔值而不是 PopupMessage 的 IsOpen,但无济于事。