WPF开发工具是一款功能强大的图形界面显示工具。在开发人员眼中,它的作用是非常强大的。WPF中UI线程队列由Dispatcher来管理和调度,所以当WPF用户线程中更新UI时,必须通过Dispatche来调度,下面这个小例子将给用户展示如何在用户线程中更新当前的时间。#t#
前台的XAML代码如下:
- < Windowx:ClassWindowx:Class=
"ThreadInvoke.Window1" - xmlns="http://schemas.microsoft
.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft
.com/winfx/2006/xaml" - Title="ThreadInvoke"Height="300"
Width="300" - >
- < StackPanelOrientation
StackPanelOrientation="Vertical"> - < StackPanelOrientationStackPanel
Orientation="Horizontal"> - < ButtonContentButtonContent="Ok"
Click="okClick"Width="50"/> - < ButtonContentButtonContent="Stop"
Click="stopClick"Width="50"/> - < /StackPanel>
- < TextBoxNameTextBoxName="timeText">
< /TextBox> - < /StackPanel>
- < /Window>
WPF用户线程后台的主要代码如下:
- //申明一个代理用于想UI更新时间
- private delegate void
DelegateSetCurrentTime();- //申明一个变量,用于停止时间的跳动
- private bool stopFlag = false;
- //处理开始和结束事件
- private void okClick(object
sender,RoutedEventArgs args)- {
- stopFlag = false;
- Thread thread = new Thread(new
ThreadStart(refreshTime));- thread.Start();
- }
- private void stopClick(object
sender, RoutedEventArgs args)- {
- stopFlag = true;
- }
- //用户线程的实现函数
- private void refreshTime()
- {
- while (!stopFlag)
- {
- //向UI界面更新时钟显示 Dispatcher.
Invoke(System.Windows.Threading.
DispatcherPriority.SystemIdle,
new DelegateSetCurrentTime
(setCurrentTime));- }
- }
- private void setCurrentTime()
- {
- String currentTime = System.
DateTime.Now.ToString();- timeText.Text = currentTime;
- }
以上就是对WPF用户线程的一些相关知识的介绍。