随笔分类 - C#技术
C#技术
摘要:C#反射(二) 如果没有看《C#反射(一)》、建议先看《C#反射(一)》再看这一篇。上一篇文章发表,有人评论我所写的东西比较基础。其实我也知道我也只不过是在写最基础的语法而已,之所以写它是因为自己学编程学了一两年之后才接触到反射,相信会有很多人跟我有过同样的经历。概其原因,书店里几乎90%的书籍都不谈反射。还有,曾经在百度、goole搜索过反射,但也很难找到自己喜欢的答案。希望我所写的东西能为那些初学编程的新手有所帮助。我不想在这里过多的描述反射的概念。我还是用我自己觉得最简单、最直接的语言来描述反射——“反射就是一种机制,通过这种机制,我们能知道一些位知程序集的详细信息!”;通过上一篇我们已
阅读全文
摘要:C#反射(一) 在还不太熟悉反射的昨天,以为反射很神秘,在网上到处找答案.今天找了段代码敲了一下,茅塞顿开!其实反射也就那么简单的一回事! 反射是一种机制,通过这种机制我们可以知道一个未知类型的类型信息.比如,有一个对象a,这个对象不是我们定义的,也许是通过网络捕捉到的,也许是使用泛型定义的,但我们想知道这个对象的类型信息,想知道这个对象有哪些方法或者属性什么的.甚至我们想进一步调用这个对象的方法.关键是现在我们只知道它是一个对象,不知道它的类型,自然不会知道它有哪些方法等信息.这时我们该怎么办?反射机制就是解决这么一个问题的.通过反射机制我们可以知道未知类型对象的类型信息. 再比如,我们有.
阅读全文
摘要:在多线程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法时会报错的,Invoke 和 BeginInvoke 就是为了解决这个问题而出现的,使你在多线程中安全的更新界面显示。正确的做法是将工作线程中涉及更新界面的代码封装为一个方法,通过 Invoke 或者 BeginInvoke 去调用,两者的区别就是一个导致工作线程等待,而另外一个则不会。而所谓的“一面响应操作,一面添加节点”永远只能是相对的,使 UI 线程的负担不至于太大而已,因为界面的正确更新始终要通过 UI 线程去做,我们要做的事情是在工作线程中包揽大部分的运算,而将对纯粹的界面更新放到 UI 线程中去做,
阅读全文
摘要:最近在研究.NET分布式缓存代码,正好涉及Lock,看了网上的文章,总结了一些Lock相关的知识,供大家一起学习参考。一、Lock定义 lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。 在多线程中,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。 而在.NE
阅读全文
摘要:中文<->英文双向翻译WEB服务http://fy.webxml.com.cn/webservices /EnglishChinese.asmx 国内手机号码归属地查询WEB服务http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx 2500多个城市天气预报 WEB服务http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx 股票行情数据 WEB 服务(支持香港、深圳、上海基金、债券和股票;支持多股票同时查询)http://webservice.webxm
阅读全文
摘要:while (true) { Thread.Sleep(1000);//这句写着,主要是没必要循环那么多次。去掉也可以。 int maxWorkerThreads, workerThreads; int portThreads; ThreadPool.GetMaxThreads(out maxWorkerThreads, out portThreads); ThreadPool.GetAvailableThreads(out workerThreads, out portThreads); if (maxWorkerThreads - workerThreads == 0) { Consol.
阅读全文
摘要:通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务。这样是使工作简单了,但是却和提供Web服务的URL、方法名、参数绑定在一起了,这是VS.NET自动为我们生成Web服务代理的限制。如果哪一天发布Web服务的URL改变了,则我们需要重新让VS.NET生成代理,并重新编译。在某些情况下,这可能是不能忍受的,我们需要C#中动态调用WebService的能力。比如我们可以把Web服务的URL保存在配置文件中,这样,当服务URL改变时,只需要修改配置文件就可以了。 说了这么多,实际上我们要实现这样的功能:publ
阅读全文
摘要:类是描述一组相似对象共有特征的抽象。通俗的讲就是物以类聚。打个比方,猪圈里有一堆的小猪,我们给它们每一个取了一个的名字,小花,小白,小黑,小xxx。。。。小花有四两重,小白有一斤重,小黑有二斤重。那么问题来了,小花,小白,小黑它们共有的特征是什么呢?OK,我们的回答是它们都是小猪!为什么你不说它们是小狼?小熊?用IS-A的观念来看,小花是小猪,小白是小猪,小黑也是小猪,符合小花是((IS)(-A))一个小猪,这一IS-A说法。反过来就是错的,我们不能说小猪是小花。所以本例中小猪就是类,而小花,小白,小黑是类的什么呢?是对象,类的对象,或称类的实例,它们具有类的共同特征,肥肥的有四条腿的动物-猪
阅读全文
摘要:C# System.Reflection 反射反射的概述反射appDomain的程序集反射单个程序集利用反射获取类型信息设置反射类型的成员通过反射创建类型的实例反射类型的接口反射的性能反射的概述反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等,。System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码和反射相关的命名空间(我们就是通过这几个命名空间访问反射信息):System.Reflection.MemberInfoSy
阅读全文
摘要:商业和贸易:1、股票行情数据 WEB 服务(支持香港、深圳、上海基金、债券和股票;支持多股票同时查询)Endpoint:http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmxDisco:http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx?discoWSDL:http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx?wsdl支持香港股票、深圳、上海封闭式基金、债券和股票;支持多股票同时查询。数据即时
阅读全文
摘要:List<FileSystemRights> ret = new List<FileSystemRights>(); DirectorySecurity dirSec = Directory.GetAccessControl(@"c:\test", AccessControlSections.All); AuthorizationRuleCollection rules = dirSec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)); foreach (
阅读全文
摘要:常见的问题作个总结,主要内容:一、路径的相关操作,如判定路径是否合法,路径类型,路径的特定部分,合并路径,系统文件夹路径等内容;二、相关通用文件对话框,这些对话框可以帮助我们操作文件系统中的文件和目录;三、文件、目录、驱动器的操作,如获取它们的基本信息,获取和设置文件和目录的属性,文件的版本信息,搜索文件和目录,文件判等,复制、移动、删除、重命名文件和目录;四、读写文件,包括临时文件,随机文件名等;五、对文件系统的监视;这一篇就先写一下前两部分。一、路径相关操作问题1:如何判定一个给定的路径是否有效/合法;解决方案:通过Path.GetInvalidPathChars或Path.GetInva
阅读全文
摘要:昨天帮同事写了一个查找文件的小工具, 却发现弹出了这个错误信息:The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. 大概的意思就是:指定的路径或文件名太长,或者两者都太长。完全限定文件名必须少于 260 个字符,并且目录名必须少于 248 个字符。用.NET的类库或API的findfirst\findn
阅读全文
摘要:axWindowsMediaPlayer1.Play 播放axWindowsMediaPlayer1.Stop 停止axWindowsMediaPlayer1.Pause 暂停axWindowsMediaPlayer1.PlayCount 文件播放次数axWindowsMediaPlayer1.AutoRewind 是否循环播放axWindowsMediaPlayer1.Balance 声道axWindowsMediaPlayer1.Volume 音量axWindowsMediaPl...
阅读全文
摘要:C# 中的委托和事件 引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过...C#中的委托和事件 目 录1.1 理解委托... 21.1.1 将方法作为方法的参数... 21.1.2 将方法绑定到委托... 41.2 事件的由来... 61.2.1 更好的封装性... 61.2.2 限制类型能力... 91.3 委托的编译代码... 101.4 .NET 框架中
阅读全文
摘要:一直想做一个多语言的程序,研究了一下.net的本地化方法,觉得做起来比较麻烦,而且不能快速切换,就自己琢磨着写一个。以我做的一个C# winform 项目为例。在建立C#实现多语言界面程序之前,首先设计多语言文件,这里我用XML来保存,基本结构如下。<?xmlversion="1.0"encoding="GB2312"?><AirControllanguage="简体中文"><Menu><Project><Itemid="0"key="MenuProj
阅读全文