线程在WPF中的使用
项目中可能会有这样的需求,一直获取新的某个数据信息,但仍不影响其他的操作功能,这时就用到了线程,获取新数据放到线程中操作,对其他操作不产生影响,下面就以随机获取数组中项为例解说WPF中使用线程这一实例:
在WPF窗体程序中拖三个Button 两个操作按钮,一个启动按钮。后台代码:
public delegate void GetSetNumber();//
bool IsContinue = true;
public ThreadModel()
{
InitializeComponent();
}
//启动
private void butStart_Click(object sender, RoutedEventArgs e)
{
if (IsContinue)
{
IsContinue = false;
button1.Content = "停止(Stop)";
button1.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new GetSetNumber(GetNewNumber));//利用委托异步调用
}
else
{
IsContinue = true;
button1.Content = "继续(Continue)";
}
}
private void GetNewNumber()
{
string[] ss = null;
int hour = DateTime.Now.Hour;
if (hour >= && hour <= )
{
label1.Content = "还在为中午吃什么发愁吗,来点击看看……";
ss = new string[]{"面条","米线","米饭", "盖饭", "土豆粉" ,"炒饭", "炒面", "饼","粥","包子","饺子","小碗","砂锅", "泡面", "热干面" ,"酸辣粉", "麻辣烫"
};
}
else
{
label1.Content = "公平公正的点名";
ss = new string[]{ "向颗","果露","王金兰", "贺玲", "贾群" ,"刘蕴涵", "郭凤熙", "宋经曌","布茜","王玉","单茹","李兒","张萨", "李思", "王武" ,"兰琉", "田琪", "杨霸","胡玖","邓穆",
"张红","王丽","郑兰", "郭青", "李路" ,"胡明", "襄阳", "杨洋","钢蛋","邓古",
};
}
//随机取数组中的值
Random random = new Random();
int index = random.Next(ss.Count());
string number = ss[index];
textBox1.Text = number;
//递归调用若不使用线程将进入死循环
if (!IsContinue)
{
button1.Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.SystemIdle,
new GetSetNumber(this.GetNewNumber));
}
}
//操作1
private void butOperate1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("我弹出来了!");
}
//操作2
private void butOperate2_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("噢噢噢也");
}
线程在WPF中的使用的更多相关文章
- 在 WPF 中的线程
线程处理使程序能够执行并发处理,以便它可以做多个操作一次.节省开发人员从线程处理困难的方式,设计了 WPF (窗口演示文稿基金会).这篇文章可以帮助理解线程在 WPF 中的正确用法. WPF 内部线程 ...
- WPF中窗口控件的跨线程调用
在WinForm中,我们要跨线程访问窗口控件,只需要设置属性CheckForIllegalCrossThreadCalls = false;即可. 在WPF中要麻烦一下,同样的不允许跨线程访问,因为没 ...
- WPF中的线程使用
原文:WPF中的线程使用 简介 但凡涉及到图形界面,往往的设计都是不支持或者不推荐使用多个线程操作界面内容.而且通常会有一个专门的线程调度器来处理任务线程和界面线程的问题.下面提供两个两个方案. 使用 ...
- WPF 中那些可跨线程访问的 DispatcherObject(WPF Free Threaded Dispatcher Object)
原文 WPF 中那些可跨线程访问的 DispatcherObject(WPF Free Threaded Dispatcher Object) 众所周知的,WPF 中多数对象都继承自 Dispatch ...
- MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信
MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 M ...
- 【WPF】 Timer与 dispatcherTimer 在wpf中你应该用哪个?
源:Roboby 1.timer或重复生成timer事件,dispatchertimer是集成到队列中的一个时钟.2.dispatchertimer更适合在wpf中访问UI线程上的元素 3.Dispa ...
- WPF中嵌入普通Win32程序的方法
公司现在在研发基于.Net中WPF技术的产品,由于要兼容旧有产品,比如一些旧有的Win32程序.第三方的Win32程序等等,还要实现自动登录这些外部Win32程序,因此必须能够将这些程序整合到我们的系 ...
- 拒绝卡顿——在WPF中使用多线程更新UI
原文:拒绝卡顿--在WPF中使用多线程更新UI 有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会造成界面卡顿,如下就是一个简单的示例: public partial class MainW ...
- 使用线程新建WPF窗体(公用进度条窗体)
使用线程新建窗体 项目中需要一个公用的进度条窗体.大家知道在wpf中,有两个线程,一个是UI线程,另一个是监听线程(一直监听用户的输入).如果我们后台有阻塞UI线程的计算存在,那么界面上的比如进度条什 ...
随机推荐
- iOS GorupBy
转自: IOS 数组分组 Grouped NSArray 1 2 3 4 5 6 7 8 NSMutableSet *set=[NSMutableSet set]; [_list enumera ...
- 数据类型和Json格式[转]
1. 前几天,我才知道有一种简化的数据交换格式,叫做yaml. 我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开. 它说,从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一 ...
- java常用用代码
/** *Java获取IP代码 */ import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.ev ...
- UVA - 1153 Keep the Customer Satisfied(贪心)
UVA - 1153 Keep the Customer Satisfied Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: ...
- HDU1276(士兵队列训练模拟与链表)
HDU1276 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descripti ...
- FileUpload 改变控件显示的文字
浏览
- Node.js stream 流学习
由于node.js 创建http 是这样的 http.createServer(function(request,response){}).listen(2000); 里面的request 就是rea ...
- jquery 获取选中的文字.当前光标所在的位置等jquery-fieldselection 插件
写词典在线编辑器用到的一个功能 能获取选中的文字.当前的光标的位置 等位置,而且支持多个文本框一起操作 非常方便 git地址:https://github.com/localhost/jquery-f ...
- poj 2886Who Gets the Most Candies?
http://poj.org/problem?id=2886 #include <cstdio> #include <cstring> #include <algorit ...
- android 状态栏(StatusBar)
一.SystemUI 概述 自 android2.2 开始 , 原本存在与 framework-res.apk 中的状态栏和下拉通知栏界面控制被分割出一个单独的 apk 文件 , 命名为 System ...