WCF中使用控件的委托,线程中的UI委托
UI界面:
<Window x:Class="InheritDemo.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<StackPanel>
<Label MouseEnter="Label_MouseEnter" MouseLeave="Label_MouseLeave">test1</Label>
</StackPanel>
</Grid>
</Window>
后端代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading; namespace InheritDemo
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
private Thread myThread = null;//定义线程
private delegate void MyDelegate(Object para);//定义委托
public Window1()
{
InitializeComponent();
}
/// <summary>
/// 鼠标移入启动线程(继续挂起线程)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Label_MouseEnter(object sender, MouseEventArgs e)
{
if (myThread == null)//启动线程
{
myThread = new Thread(ThreadMethod);
myThread.IsBackground = true;//后台线程
myThread.Start(sender);
}
else { myThread.Resume(); }//继续挂起线程
}
/// <summary>
/// 鼠标移出挂起线程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Label_MouseLeave(object sender, MouseEventArgs e)
{
if (myThread != null) { myThread.Suspend(); }//挂起线程
}
/// <summary>
/// 线程事件调用委托
/// </summary>
/// <param name="para"></param>
private void ThreadMethod(object para)
{
MyDelegate myDelegate = new MyDelegate(DelegateMethod);
while (true)
{
this.Dispatcher.BeginInvoke(myDelegate, para);//调用委托
Thread.Sleep();//休眠1s
}
}
/// <summary>
/// 委托事件获取当前时间
/// </summary>
/// <param name="para"></param>
private void DelegateMethod(object para)
{
Label lbl = (Label)para;
lbl.Content = DateTime.Now.ToString();
} }
}
WCF中使用控件的委托,线程中的UI委托的更多相关文章
- android中ListView控件&&onItemClick事件中获取listView传递的数据
http://blog.csdn.net/aben_2005/article/details/6592205 本文转载自:android中ListView控件&&onItemClick ...
- VC线程中操作控件,引起程序卡死的问题。
[问题还原] 线程中操作控件,具体为控制一个按键的使能,使能后结束线程. 主程序中有一个死循环,等待线程结束. 然后,就没有然后了-- [解决方案] 在主程序死循环中,如果检测到界面消息,优先处理掉.
- 在WinForm中使用委托来在其他线程中改变控件的显示
假设winform中有两个控件: 1.ListView用来显示进度的文本提示,ID:listView_progressInfo 2.ProgressBar用来显示进度,ID:progressBar1 ...
- WPF中窗口控件的跨线程调用
在WinForm中,我们要跨线程访问窗口控件,只需要设置属性CheckForIllegalCrossThreadCalls = false;即可. 在WPF中要麻烦一下,同样的不允许跨线程访问,因为没 ...
- [转]MFC子线程中更新控件内容的两种办法
一.概述 每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率.针对界面来说,还能提高界面的响应能力.一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线 ...
- C# 跨线程调用控件的4中方法
原文:C# 跨线程调用控件 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应. 同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线 ...
- Android线程中设置控件
在Android中经常出现多线程中设置控件的值报错的情况,今天教大家封装一个简单的类避免这样的问题,同样也调用实现也非常的方便. 自定义类: /** * Created by wade on 2016 ...
- 用委托在listbox中异步显示信息,解决线程间操作无效,从不是创建控件的线程访问它
//创建一个委托,是为访问listbox控件服务的. public delegate void UpdateTxt(string msg); //定义一个委托变量 public UpdateTxt u ...
- Android 中常见控件的介绍和使用
1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...
随机推荐
- springMVC之HelloWorld
一.总结 1.web项目一定要把引用的jar包放在WEB-INF/lib下(common-logging1.2,spring4.1.6所有包,其实不需要那么多,懒得筛选了,) 2.web.xml中要初 ...
- 单选按钮,通过js判断是否选中
<input type="radio" value="0" style="vertical-align:middle" name=&q ...
- java 倒序输出
输入五句话,用数组存储起来,然后逆序输出这五句话. import java.util.Scanner; class work1{ public static void main(String[] a ...
- Laxcus大数据管理系统2.0(11)- 第九章 容错
第九章 容错 在当前,由于集群庞大的组织体系和复杂性,以及用户普遍要求低成本硬件,使得集群在运行过程中发生的错误概率,远远高于单一且性能稳定的小型机服务器,并且集群在运行过程中几乎是不允许停止的,这就 ...
- Wordpress SEO对策(译)
原文link http://netaone.com/wp/wordpress-seo-plugin/ 统一管理SEO对策的设定能够统一管理SEO相关设定的插件:All in One SEO Pack. ...
- 【LeetCode】8. String to Integer (atoi) 字符串转整数
题目: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ca ...
- multi2sim,booksim简介
booksim是周期精确互连网络仿真器,设计用来配合"Principles and Practices of Interconnection Networks"课程教学,仿真器采用 ...
- jquery获取对象
1.JQuery的核心的一些方法 $("Element").length; ‘元素的个数,是个属性 $("Element").size(); ’也是元素的个数, ...
- python字符串常用操作方法
python字符串操作常用操作,如字符串的替换.删除.截取.复制.连接.比较.查找.分割等,需要的朋友可以参考下. 1.去除空格str.strip():删除字符串两边的指定字符,括号的写入指定字符,默 ...
- ios如何获取位置权限
获取当前位置需要改plist文件 在plist文件加入 NSLocationWhenInUseUsageDescription 字段 /** 初始化一个管理器对象 */ locationMan ...