为自己写的程序添加插件真的是一个相当常见的功能,然而如果只是简单加载程序集然后去执行程序集中的代码,会让宿主应用程序暴露在非常危险的境地!因为只要插件能够运行任何一行代码,就能将宿主应用程序修改得天翻地覆哭爹喊娘:而根本原因,就在于暴露了整个托管堆和整个 UI 树. 如果将宿主和插件放到不同的应用程序域中,则可以解决此问题.本文将介绍跨应用程序域承载 UI 的方法,其中也包含跨域(Cross-Domain)调用方法.   来自于托管插件框架的辅助类 .NET Framework 自 3.5 以来…
转载自: 跨应用程序域(AppDomain)的单例(Singleton)实现 - CorePlex代码库 - CorePlex官方网站,Visual Studio插件,代码大全,代码仓库,代码整理,分享,为打造最有价值的在线代码库而不懈努力http://www.udnz.com/code-2882.htm 工作中基于插件模式,特别是插件可能不稳定,导致主程序进程终止时,我们往往使用应用程序域来隔离插件和主程序,但此时如果主程序中有单例(Singleton)实现,那在不同的AppDomain里访问…
原文 WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口) WPF 的 UI 逻辑只在同一个线程中,这是学习 WPF 开发中大家几乎都会学习到的经验.如果希望做不同线程的 UI,大家也会想到使用另一个窗口来实现,让每个窗口拥有自己的 UI 线程.然而,就不能让同一个窗口内部使用多个 UI 线程吗? 阅读本文将收获一份 Win32 函数 SetParent 及相关函数的使用方法. WPF 同一个窗口中跨线程访问 UI 有多种方法: 使用 VisualTarget (…
在目前的项目开发中,分布式开发已经逐渐成为主流.一个项目要是没有采用分布式架构,都不好意思跟别人说这是一个完整的项目.这句话虽然有些过激,但是随着人们对效率的要求在提高,以及产品需要提升用户体验.只有在软件项目的效率和体验做到高质量,才可以赢得用户和市场. 对于.NET项目,我们使用较多的分布式结构有Webservice,.Net remoting,MSMQ,WCF,WebAPI等等,我们在使用这些框架的时候,从这些分布式框架中得到了很好的用户体验.在.NET项目中,分布式架构对项目的开发也有很…
如何跨线程访问Winform中的UI元素 假如制作一个Socket聊天应用程序,很可能会用到多线程: 例如为Receive方法开辟单独一个线程,例如为Receive方法开辟单独一个线程(后台运行的线程IsBackGround=true): 然而Winform的UI控件都是运行在主线程中的,如果从其他线程直接访问UI控件,系统就会报错: public void Show(string s) { listBox1.Items.Add(s); } 那么如何才能在其他线程访问主线程,并且向UI控件传递数…
应用程序域,你在网上可以查到它的定义,凡是概念性的东西,大伙儿只需要会搜索就行,内容看了就罢,不用去记忆,更不用去背,“名词解释”是大学考试里面最无聊最没水平的题型. 简单地说,应用程序域让你可以在一个进程中将某些代码隔离执行,相同的代码可以在不同的应用程序域中独立执行,互不干扰.也就是我做我的事,他干他的活,互不影响. 一.隔离性 先来看看,应用程序域之间的隔离是怎么一回事,请原谅老周的理论水平低下,从来不会长篇大论地叙述,老周最大的特长是写代码来说明问题.所以,关于应用程序域之间的隔离性,还…
时隔第一次被UI思路激励,到现在1.0的粗糙版本发布,掐指一算整整半年了.半年之间,有些细节不断推翻重做,再推翻再重做.时隔今日,终于能先出来个东西了,这个版本很粗糙,主体功能大概能实现了,但是还是有很多很多的问题.不过有问题没事,可以进行修改完善,这是相对轻松的问题,最艰难的从无到有的创造才是最艰难的.好了,不废话了,我们直接进入正题 --- UI.js功能介绍. 首先介绍几个概念 分布式:原来的概念只有分布式计算,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这…
转眼就到了元宵节,匆匆忙忙的脚步是我们在为生活奋斗的写照,新的一年,我们应该努力让自己有不一样的生活和追求.生命不息,奋斗不止.在上篇博文中主要介绍了.NET的AppDomain的相关信息,在本篇博文中将会主要说明.NET程序集.对象代理,以及对象的封送原理. 一.程序集解析: 谈到程序集,就要知道什么叫做程序集,我们看看程序集的定义是什么.程序集大致分为两种:一种是类库(就是我们看到的.DLL文件):一种是可执行程序(就是我们看到的.EXE文件).程序集是一个或多个模块/资源文件的逻辑分组(一…
在目前的项目开发中,分布式开发已经逐渐成为主流.一个项目要是没有采用分布式架构,都不好意思跟别人说这是一个完整的项目.这句话虽然有些过激,但是随着人们对效率的要求在提高,以及产品需要提升用户体验.只有在软件项目的效率和体验做到高质量,才可以赢得用户和市场. 对于.NET项目,我们使用较多的分布式结构有Webservice,.Net remoting,MSMQ,WCF,WebAPI等等,我们在使用这些框架的时候,从这些分布式框架中得到了很好的用户体验.在.NET项目中,分布式架构对项目的开发也有很…
NET对象的跨应用程序域 转眼就到了元宵节,匆匆忙忙的脚步是我们在为生活奋斗的写照,新的一年,我们应该努力让自己有不一样的生活和追求.生命不息,奋斗不止.在上篇博文中主要介绍了.NET的AppDomain的相关信息,在本篇博文中将会主要说明.NET程序集.对象代理,以及对象的封送原理. 一.程序集解析: 谈到程序集,就要知道什么叫做程序集,我们看看程序集的定义是什么.程序集大致分为两种:一种是类库(就是我们看到的.DLL文件):一种是可执行程序(就是我们看到的.EXE文件).程序集是一个或多个模…