项目中可能会有这样的需求,一直获取新的某个数据信息,但仍不影响其他的操作功能,这时就用到了线程,获取新数据放到线程中操作,对其他操作不产生影响,下面就以随机获取数组中项为例解说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中的使用的更多相关文章

  1. 在 WPF 中的线程

    线程处理使程序能够执行并发处理,以便它可以做多个操作一次.节省开发人员从线程处理困难的方式,设计了 WPF (窗口演示文稿基金会).这篇文章可以帮助理解线程在 WPF 中的正确用法. WPF 内部线程 ...

  2. WPF中窗口控件的跨线程调用

    在WinForm中,我们要跨线程访问窗口控件,只需要设置属性CheckForIllegalCrossThreadCalls = false;即可. 在WPF中要麻烦一下,同样的不允许跨线程访问,因为没 ...

  3. WPF中的线程使用

    原文:WPF中的线程使用 简介 但凡涉及到图形界面,往往的设计都是不支持或者不推荐使用多个线程操作界面内容.而且通常会有一个专门的线程调度器来处理任务线程和界面线程的问题.下面提供两个两个方案. 使用 ...

  4. WPF 中那些可跨线程访问的 DispatcherObject(WPF Free Threaded Dispatcher Object)

    原文 WPF 中那些可跨线程访问的 DispatcherObject(WPF Free Threaded Dispatcher Object) 众所周知的,WPF 中多数对象都继承自 Dispatch ...

  5. MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信

    MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 M ...

  6. 【WPF】 Timer与 dispatcherTimer 在wpf中你应该用哪个?

    源:Roboby 1.timer或重复生成timer事件,dispatchertimer是集成到队列中的一个时钟.2.dispatchertimer更适合在wpf中访问UI线程上的元素 3.Dispa ...

  7. WPF中嵌入普通Win32程序的方法

    公司现在在研发基于.Net中WPF技术的产品,由于要兼容旧有产品,比如一些旧有的Win32程序.第三方的Win32程序等等,还要实现自动登录这些外部Win32程序,因此必须能够将这些程序整合到我们的系 ...

  8. 拒绝卡顿——在WPF中使用多线程更新UI

    原文:拒绝卡顿--在WPF中使用多线程更新UI 有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会造成界面卡顿,如下就是一个简单的示例: public partial class MainW ...

  9. 使用线程新建WPF窗体(公用进度条窗体)

    使用线程新建窗体 项目中需要一个公用的进度条窗体.大家知道在wpf中,有两个线程,一个是UI线程,另一个是监听线程(一直监听用户的输入).如果我们后台有阻塞UI线程的计算存在,那么界面上的比如进度条什 ...

随机推荐

  1. PHP MySQL 读取数据

    PHP MySQL 读取数据 从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据: SELECT column_name(s) FROM table_name 如需学习更多关于 ...

  2. C++ 数组作为函数参数时,传递数组大小的方法

    废话不多说,先上错误示范: void fun(int arr[arr_num]) { // ... } int main() { // ... int *arr = new int[10]; fun( ...

  3. Javascript模块化编程:模块的写法

    声明:本文转载自:阮一峰的网络日志,原文地址http://www.ruanyifeng.com/blog/2012/10/javascript_module.html,http://www.ruany ...

  4. Nginx配置文件nginx.conf详细说明

    Nginx配置文件nginx.conf详细说明 #worker_processes 8; #worker_cpu_affinity 00000001 00000010 00000100 0000100 ...

  5. java获得url里面所带参数的值

    url: http://localhost:8080/test/list?p=1&d=2014 要获得所带参数p和d的值,方法如下: int p = Integer.parseInt(requ ...

  6. 获取当前元素节点的position和宽高(兼容)

    function objxy(n){ var o=document.getElementById(n),x=0,y=0,w=o.offsetWidth,h=o.offsetHeight if(o.ge ...

  7. PHP面向对象(OOP)编程完全教程:10.__set(),__get(),__isset(),__unset()四个方法的应用

    一般来说,总是把类的属性定义为private,这更符合现实的逻辑.但是, 对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数”__get()”和”__set()”来获取和赋值其属性 ...

  8. error: File not found by glob???

    引发上述问题的几种情形: 1.rpm包的包名中含有“[.]”这类特殊符号; 2.执行rpm -ivh xxxx.rpm时,xxxx包名不存在; 3.rpm包顶层的目录名不存在或者存在问题:     - ...

  9. Java高精度学习第一弹

    为了快速解决高精度问题,总算是要来接触java了,算上这学期要开java的课了,好好学习吧! 拿来练手的是hdu的1002,高精度加法. import java.util.*; import java ...

  10. 学c语言做练习之​统计文件中字符的个数

    统计文件中字符的个数(采用命令行参数) #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[] ...