• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 浅谈Silverlight 跨线程的使用详解

浅谈Silverlight 跨线程的使用详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了silverlight,silverlight下载,silverlight是什么,silverlight安装失败,silverlight插件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

新建SL4 应用程序,在MainPage下添加代码:

<Button x:Name="btnThread1" Click="btnThread1_Click">Thread1</Button>

后台代码为:

clip_image002

这个问题的原因很简单:一个线程尝试调用另一个线程的方法 解决这个异常的方式很简单,

1:使用DependencyObject.Dispatcher.BeginInvoke 方法:

            new Thread(() =>
            {
                context.Post((state) =>
                {
                    MessageBox.Show("Hello World");
                }, null);
            }).Start();
        }
</div>
但是这两者都有一个缺陷,假设有多个线程,例如多线程的多线程:

                new Thread(() =>
                {
                    context.Post((state) =>
                    {
                        MessageBox.Show("Hello World");
                    }, null);
                }).Start();
            }).Start();
        }
</div>
虽然这里保存了context,但是因为context并不是UI线程的SynchronizationContext,所以还是会跑出异常。

所以提出了第三种方案:

1:新建静态类UISynchronizationContext,代码如下:

        public App()
        {
            this.Startup += this.Application_Startup;
            this.Exit += this.Application_Exit;
            this.UnhandledException += this.Application_UnhandledException;

            //保存UI线程同步上小文
            UISynchronizationContext.Context = SynchronizationContext.Current;

            InitializeComponent();
        }
</div>
使用的时候只需要:
复制

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • WPF/Silverlight实现图片局部放大的方法分析
  • silverlight实现图片局部放大效果的方法
  • Silverlight文件上传下载实现方法(下载保存)
  • Silverlight将图片转换为byte的实现代码
  • 汉字转拼音缩写示例代码(Silverlight和.NET 将汉字转换成为拼音)
  • 基于Silverlight打印的使用详解,是否为微软的Bug问题
  • 浅谈Silverlight 跨线程的使用详解
  • 基于Silverlight DataGrid中无代码设置开始与结束日期DatePicker的实现方法
  • 解析Silverlight调用WCF/Rest异常的解决方法

相关文章

  • 2017-05-28c#类的使用示例
  • 2017-05-28C#动态webservice调用接口
  • 2017-05-28C#实现获取鼠标句柄的方法
  • 2017-05-28C# 调用API函数弹出映射网络驱动器对话框问题
  • 2017-05-28C#在后台运行操作(BackgroundWorker用法)示例分享
  • 2017-05-28.Net WInform开发笔记(五)关于事件Event
  • 2017-05-28c#泛型序列化对象为字节数组的示例
  • 2017-05-28C#截取中英文混合指定长度字符串实例
  • 2017-05-28C#创建安全的字典(Dictionary)存储结构
  • 2017-05-28c#中合并excel表格的方法示例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#使用yield关键字让自定义集合实现foreach遍历的方法
    • C#中如何执行存储过程方法
    • C#不可变类型深入解析
    • C#实现Menu和ContextMenu自定义风格及contextMenu自定义
    • 初步认识C#中的Lambda表达式和匿名方法
    • c#字符串值类型与引用类型比较示例
    • DevExpress实现为TextEdit设置水印文字的方法
    • 基于C#实现一个最简单的HTTP服务器实例
    • c#中的delegate(委托)和event(事件)
    • 验证本机的excel版本的C#代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有