dispatcherTimer 线程
注意要点:
一、能直接访问并操作UI界面元素。
二、需要注意会造成UI线程阻塞,就是界面卡机的情况。
可以理解为占用UI线程,因为它可以直接访问并更新UI。这种线程一般不推荐使用。这种线程实际上会造成UI线程的阻塞,其它线程也可以造成线程阻塞。主要是这种线程在它的Tick事件中执行的都是占用UI线程,也就是说它在执行定时器事件的时候会和UI界面线程同步。如果是后台线程使用的不当,写的不好的话。其线程也会造成页面卡机。以上是个人初学的理解。
其特点是使用方便可以直接访问并操作UI界面元素。
下面是silverlight实例代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace 多线程
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender,RoutedEventArgs e)
{
dispatcherTimer timer = new dispatcherTimer();//定时器
timer.Interval = TimeSpan.FromSeconds(1.0);//设置间隔时间
timer.Tick += new EventHandler((s,ee) =>//使用Lambda 表达式
{
//更新文本值
this.textBox1.Text = DateTime.Now.ToString();
});
////也可以如下写法
//timer.Tick += new EventHandler(timer_Tick);
timer .Start ();//开始定时器
}
//void timer_Tick(object sender,EventArgs e)
//{
// //更新文本值
// this.textBox1.Text = DateTime.Now.ToString();
//}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。