zoukankan      html  css  js  c++  java
  • Silverlight 线程\跨线程 源码实例

    开发环境:VS 2010 + Silverlight 4

    实例内容:

        运用线程更改界面背景色 

          (当然,这只是一个线程的简单应用,如果只是需要更改背景色其实没必要用线程,完全可以用Time控件之类的实现。但本实例的主要  

         目 的是让大家清楚线程在Silverlight中应用的方法,方便大家以后运用与扩展)

    1.项目结构:

    2.界面UI源码:

    <UserControl x:Class="Thread.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        d:DesignHeight="300" d:DesignWidth="400">
        <Grid x:Name="LayoutRoot" Background="White">
        </Grid>
    </UserControl>

    3.MainPage.xaml.cs 源码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    namespace Thread
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
                LoadEvent();//页面元素加载完成后调用线程
            }
            private void LoadEvent()
            {
                ColorChange change = new ColorChange();
                change.ColorChnagedEvent += new ColorChange.ColorChangeArg(change_ColorChnagedEvent);//订阅颜色更改事件
                change.Start();//线程启动
            }
            /// <summary>
            /// 由于Silverlight中不允许直接跨线程,所以需要利用委托通知界面更改
            /// </summary>
            /// <param name="_color">颜色</param>
            void change_ColorChnagedEvent(Color _color)
            {
                System.Windows.Deployment.Current.Dispatcher.BeginInvoke(new ColorChange.ColorChangeArg(ChangeUIColor), _color);
            }
            /// <summary>
            /// 更改背景颜色
            /// </summary>
            /// <param name="_Color"></param>
            private void ChangeUIColor(Color _Color)
            {
                LayoutRoot.Background = new SolidColorBrush(_Color);
            }
        }
    }

    3.ColorChange.cs 源码

    /**************************************************
    * 文 件 名:ColorChange.cs
    * 所属模块:Thread
    * 文件功能:启动颜色变换,事件通知进行颜色更改
     *
    * 创 建 人:markeluo
    * 创建日期:2011-09-03
    * 修 改 人:
    * 修改日期:
    * 备    注:
    * ************************************************/
    using System;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Ink;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Threading;
    namespace Thread
    {
        /// <summary>
        /// 颜色控制更改类
        /// </summary>
        public class ColorChange
        {
            public delegate void ColorChangeArg(Color _color);//委托
            /// <summary>
            /// 颜色发生了更改
            /// </summary>
            public event ColorChangeArg ColorChnagedEvent;
            /// <summary>
            /// 开始变换颜色
            /// </summary>
            public void Start()
            {
                System.Threading.Thread ColorChangeThread = new System.Threading.Thread(new System.Threading.ThreadStart(ControlColorChange));
                ColorChangeThread.IsBackground = true;
                ColorChangeThread.Start();
            }
            /// <summary>
            /// 变换颜色
            /// </summary>
            private void ControlColorChange()
            {
                for (int i = 1; i < 10; i++)
                {
                    if (i % 2 == 0)
                    {
                        if (ColorChnagedEvent != null)//判断是否被订阅
                        {
                            ColorChnagedEvent(Colors.Blue);//通知颜色发生更改,更改为蓝色
                        }
                    }
                    else
                    {
                        if (ColorChnagedEvent != null)//判断是否被订阅
                        {
                            ColorChnagedEvent(Colors.Red);//通知颜色发生更改,更改为红色
                        }
                    }
                    System.Threading.Thread.Sleep(1000);//暂停1秒
                }
            }
        }
    }

     

     

     

  • 相关阅读:
    构建之法阅读笔记06
    构建之法阅读笔记05
    人月神话阅读笔记02
    人月神话阅读笔记01
    构建之法阅读笔记04
    学习进度09
    描绘用户场景并将典型用户和用户场景描述
    学习进度08
    第一冲刺阶段工作总结11
    第一冲刺阶段工作总结10
  • 原文地址:https://www.cnblogs.com/luowanli/p/2639907.html
Copyright © 2011-2022 走看看