WPF开发中的多线程的问题
今天帮助同事做了一个WPF版的多线程demo,分享给大家。
要实现的问题就是非主线程thread1 去后台不停的取新数据,当有新数据的时候就会展示到前台。
我给他做的demo实现一个按秒的计数器,随着时间然后每秒数据加1,
这个demo涉及到的点有 多线程,垮线程更改控件的值Dispatcher的使用
1、我们新建项目 WPF项目,demo
2、在设计器上添加一个控件
<Label Content="Label" Name="m1" HorizontalAlignment="Left" Margin="197,57,0,0" VerticalAlignment="Top" FontSize=""/>
3、新建业务类
public class Model
{
public String Data;
}
public delegate void Exe(Model a);
public class WillDo
{
public event Exe Output;
public void 后台数据方法()
{
int i = ;
while (true)
{
Output(new Model() { Data = i.ToString() });
i++;
Thread.Sleep();
}
}
}
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开发中的多线程的问题的更多相关文章
- WPF开发中Designer和码农之间的合作
想要用WPF做出一流的软件界面, 必须要Designer和码农通力合作.理想的情况是平时并行开发,Designer用Expression套件(包括Design和Blend)来设计界面,码农开发Mode ...
- web开发中的多线程死锁问题,避免死锁
1.什么是死锁,产生死锁的原因,和产生死锁的必要条件 所谓死锁(DeadLock),是指多个进程或线程在运行过程中因争夺资源而造成的一种僵局,当进程或线程处于僵局时,若无外力作用,它们将无法再向前推进 ...
- 多线程在iOS开发中的应用
多线程基本概念 01 进程 进程是指在系统中正在运行的一个应用程序.每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内. 02 线程 2-1 基本概念 1个进程要想执行任务,必须得有线程 ...
- 多线程技术在iOS开发中的使用
进程和线程 要使用多线程,首先需要理解进程和线程这2个概念.这里我简单的说一下. 所谓进程对应的是一个应用程序,负责开辟内存空间供应用程序使用,但是进程不能执行任务(指令).一个进程至少包含一条线程, ...
- iOS开发中GCD在多线程方面的理解
GCD为Grand Central Dispatch的缩写. Grand Central Dispatch (GCD)是Apple开发的一个多核编程的较新的解决方法.在Mac OS X 10.6雪豹中 ...
- 拒绝卡顿——在WPF中使用多线程更新UI
原文:拒绝卡顿--在WPF中使用多线程更新UI 有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会造成界面卡顿,如下就是一个简单的示例: public partial class MainW ...
- 使用XAML在WPF项目中承载ArcGIS Engine地图控件开发
原文 http://blog.csdn.net/flexmapserver/article/details/5868882 用Windows Form进行ArcGIS Engine二次开发时常见的形式 ...
- MacOS和iOS开发中异步调用与多线程的区别
很多童鞋可能对Apple开发中的异步调用和多线程的区别不是太清楚,这里本猫将用一些简单的示例来展示一下它们到底直观上有神马不同. 首先异步调用可以在同一个线程中,也可以在多个不同的线程中.每个线程都有 ...
- 【WPF开发备忘】使用MVVM模式开发中列表控件内的按钮事件无法触发解决方法
实际使用MVVM进行WPF开发的时候,可能会用到列表控件中每行一个编辑或删除按钮,这时直接去绑定,发现无法响应: <DataGridTemplateColumn Header="操作& ...
随机推荐
- codeforces 777C
C.Alyona and Spreadsheet During the lesson small girl Alyona works with one famous spreadsheet compu ...
- hdu 1025
Problem Description JGShining's kingdom consists of 2n(n is no more than 500,000) small cities which ...
- [转]GDB
gdb调试coredump文件 gcc -g main.c //在目标文件加入源代码的信息 gdb a.out (gdb) start //开始调试 (gdb) n //一条一条执行 (gdb) st ...
- HTML 浏览器对象 讲解
Window对象 Ø 属性 • Document:文档对象 • Event:事件对象 • History:历史记录对象 • Location:位置对象 • Name:w ...
- 博主自传——蒟蒻的OI之路
博主来自河北石家庄市第二中学,现在读高二,主攻信息学竞赛(其实并没有学习其他学科竞赛). NOIP中人品大爆发,使劲挤进河北省一等奖队伍,侥幸留在竞赛团队中(差点就淘汰出局啦). 关于我的ID,YOU ...
- 【uoj207】 共价大爷游长沙
http://uoj.ac/problem/207 (题目链接) 题意 给出一棵无根树,4种操作:在路径集合中加入一条路径,在路径集合中删除一条路径,删一条边加一条边,查询一条边是否被集合中所有路径经 ...
- php关于Session和cookie总结
什么是 Cookie? cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,能够创建并取回 c ...
- Mysql的命令总结
Mysql常用命令 启动 net start mysql 关闭 net stop mysql 连接mysql mysql -uroot -ppssword mysql -uroot -P3307 -p ...
- [学习笔记]Dsu On Tree
[dsu on tree][学习笔记] - Candy? - 博客园 题单: 也称:树上启发式合并 可以解决绝大部分不带修改的离线询问的子树查询问题 流程: 1.重链剖分找重儿子 2.sol:全局用桶 ...
- 【模板】堆优化Dijkstra
Dij的核心思想:全局最小值不会被其他节点更新,因此得到最小值后只需要扩展一次即可. 概念:扩展.出队 注意:vis[ ]数组表示的是每个节点是否扩展过,因此开始时vis[st]不置1. 时间复杂度\ ...