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)。
我正在开发 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)。