WPF:输出正确但是 Window 没有出现

WPF: The Output is Correct But the Window doesn't show up

我正在开发 WPF 应用程序。我需要一种方法每 5 秒 运行 并输出它捕获的信息。我使用 DateTime 的差异来确定是否已经过了 5 秒。当我开始 运行ning 时,我可以看到每 5 秒输出一次正确的信息。但是,应用程序的 window 没有出现,我也没有在状态栏中找到它的图标。这是我的代码 public MainWindow():

InitializeComponent();            
    DateTime now;
        DateTime _lastTime5SecondsHadPassed = DateTime.Now; ;
        TimeSpan elapsed;
        do
        {
            now = DateTime.Now;
            elapsed = now - _lastTime5SecondsHadPassed;
            if (elapsed.Seconds >= 10)
            {
                title = GetActiveWindowTitle();
                Trace.WriteLine(title);
                _lastTime5SecondsHadPassed = DateTime.Now;
            }

        } while (true);

后来发现把这段代码移到哪个window里面,其他的windows会正常出现,但是每次用这段代码切换到window时,window 不会出现。有人有什么主意吗?提前致谢!

克莱门斯完全正确。您正在生成的当前代码是一个无限循环,不允许程序的其余部分继续运行。

以下代码无耻地盗自WPF Tutorial

Xaml 对于 Window:

<Window x:Class="WpfTutorialSamples.Misc.DispatcherTimerSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="DispatcherTimerSample" Height="150" Width="250">
    <Grid>
        <Label Name="lblTime" FontSize="48" HorizontalAlignment="Center" VerticalAlignment="Center" />
    </Grid>
</Window>

以及后面的代码:

using System;
using System.Windows;
using System.Windows.Threading;

namespace WpfTutorialSamples.Misc
{
        public partial class DispatcherTimerSample : Window
        {
                public DispatcherTimerSample()
                {
                        InitializeComponent();
                        DispatcherTimer timer = new DispatcherTimer();
                        timer.Interval = TimeSpan.FromSeconds(1);
                        timer.Tick += timer_Tick;
                        timer.Start();
                }

                void timer_Tick(object sender, EventArgs e)
                {
                        lblTime.Content = DateTime.Now.ToLongTimeString();
                }
        }
}

您会注意到 Window 的构造函数创建了一个 1 秒的计时器。每秒,window 上的标签将更新为 DateTime.Now.ToLongTimeString() 的值(例如 10:30:15)。