WPF开发中的多线程的问题
2017-04-11 17:40
134 查看
今天帮助同事做了一个WPF版的多线程demo,分享给大家。
要实现的问题就是非主线程thread1 去后台不停的取新数据,当有新数据的时候就会展示到前台。
我给他做的demo实现一个按秒的计数器,随着时间然后每秒数据加1,
这个demo涉及到的点有 多线程,垮线程更改控件的值Dispatcher的使用
1、我们新建项目 WPF项目,demo
2、在设计器上添加一个控件
3、新建业务类
4、在设计器的后台代码上加入下面的代码
5、做的效果如下
要实现的问题就是非主线程thread1 去后台不停的取新数据,当有新数据的时候就会展示到前台。
我给他做的demo实现一个按秒的计数器,随着时间然后每秒数据加1,
这个demo涉及到的点有 多线程,垮线程更改控件的值Dispatcher的使用
1、我们新建项目 WPF项目,demo
2、在设计器上添加一个控件
<Label Content="Label" Name="m1" HorizontalAlignment="Left" Margin="197,57,0,0" VerticalAlignment="Top" FontSize="40"/>
3、新建业务类
public class Model { public String Data; } public delegate void Exe(Model a); public class WillDo { public event Exe Output; public void 后台数据方法() { int i = 1; while (true) { Output(new Model() { Data = i.ToString() }); i++; Thread.Sleep(300); } } }
4、在设计器的后台代码上加入下面的代码
public partial class MainWindow : Window { WillDo c = new WillDo(); public MainWindow() { InitializeComponent(); c.Output += C_Output; } private void C_Output(Model a) { this.Dispatcher.Invoke(new Action(() => { m1.Content = a.Data.ToString(); })); } private void Window_Loaded(object sender, RoutedEventArgs e) { var th1 = new Thread(() => { c.后台数据方法(); }); th1.IsBackground = true; th1.Start(); } }
5、做的效果如下
相关文章推荐
- WPF开发中遇到的问题及解决系列(一):How can I programmatically click a Button
- WPF开发中遇到的问题及解决系列(三):如何改变ListView 中各行的背景色(背景色产生交替效果)
- [Android开发常见问题-7] 多线程开发的几种方式和子线程操作UI线程控件的问题
- win8开发wpf程序遇到的无语问题
- WPF开发过程中遇到的小问题
- 多线程下WinForm开发应该注意哪些问题?
- WPF多线程问题
- 【iOS开发-55】图片轮播案例:scrollView的分页、滚动条、利用代理控制定时器和Page Control以及多线程问题
- 开发随笔-处理.net 多线程访问数据库问题
- iOS多线程开发小demo4,线程的同步问题
- wpf开发常见问题(1)
- WinCE5.0移动平台开发笔记(c#中使用多线程访问winform中控件的若干问题(zt))
- Symbian多线程开发问题
- 多线程下WinForm开发应该注意哪些问题?
- WPF代码注意事项,开发常见问题,知识总结
- WPF开发中遇到的问题及解决系列(二):如何获取通过binding生成的ComboBox或者ListBox等的Item
- 在wpf开发中,使用prism的一些问题解决
- ArcGIS 10开发WPF程序时遇到的问题
- WPF触控程序开发(二)——整理的一些问题
- libcurl多线程下载开发过程中需要注意的一个问题