项目中可能会有这样的需求,一直获取新的某个数据信息,但仍不影响其他的操作功能,这时就用到了线程,获取新数据放到线程中操作,对其他操作不产生影响,下面就以随机获取数组中项为例解说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. 利用GDB在远程开发机进行调试

    由于一些环境的制约,很多同学都可能需要在开发机上进行调试,但由于开发机资源的限制,在开发机上直接进行本地的GDB环境配置就成了难题,这个时候其实我们可以利用GDB中自带的gdbserver工具就可以进 ...

  2. 3 Longest Substring Without Repeating Characters(最长不重复连续子串Medium)

    题目意思:求字符串中,最长不重复连续子串 思路:使用hashmap,发现unordered_map会比map快,设置一个起始位置,计算长度时,去减起始位置的值 eg:a,b,c,d,e,c,b,a,e ...

  3. yii2源码学习笔记

    assets   前端资源文件夹,用于管理css js等前端资源文件等 commands   包含命令行命令,文件为控制器文件 config 应用的配置文件 controllers 控制器文件 mai ...

  4. IOS快速开发之常量定义

    ---恢复内容开始--- 在IOS开发中,有一些方法常常需要用的,但是有很长的方法名,这造成了代码长,写起来累,我们可以通过宏定义了解决这些问题 比如说在代码布局的时候会遇上这样的问题,我们要获取上面 ...

  5. CodeForces 474B(标记用法)

    CodeForces 474B Time Limit:1000MS Memory Limit:262144KB   64bit IO Format:%I64d & %I64u Descript ...

  6. socket本地模拟TCP 服务器+客户端(二)

    建立两个py文件,分别打开两个cmd界面,即可进行通信.服务器端运用多进程,连续不断的处理从客户端接收到的数据:客户端通过一个list不断给客户端发送数据. (每个连接都必须创建新线程(或进程)来处理 ...

  7. C# 代码中 计算某个函数 或WebService 请求花费时间

    /// 计算请求所花费的时间 System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start( ...

  8. python3.4.2 安装Pillow

    Python 3.x 安装Pillow给Python安装Pillow非常简单,使用pip或easy_install只要一行代码即可.在命令行使用PIP安装: pip install Pillow或在命 ...

  9. 转:Hprose for php(一)——快速入门

    文章来自于:http://blog.csdn.net/half1/article/details/21095665 本文参考了Hprose官方的用户手册,Hprose官网:http://www.hpr ...

  10. C++学习笔记--Season 2

    一个简单的EGE程序: #include "graphics.h" //EGE库的头文件 int main(int argc, char** argv) { initgraph(, ...