摘要: Technorati 标签: .Net4.0,Tuple,新特性Microsoft在MSDN中对Tuple的描述是“A tuple is a data structure that has a specific number and sequence of values.”,由于E文水平有限,我理解的大概意思就是:Tuple是具有指定数量和顺序的值的一种数据结构。针对这种数... 阅读全文
posted @ 2010-10-22 16:52 代码的旋律 阅读(4412) 评论(10) 推荐(0) 编辑
摘要: Visual Studio自带的报表文件(rdlc,后面提到的报表,都指rdlc报表文件)虽然功能相对不是十分强大,但应付一般的报表要求也是绰绰有余了。关于rdlc报表的使用和设计方法,这里就不做讲解了,本文主要介绍一下如何不使用报表预览控件(ReportViewer),直接将报表的内容在打印机上打印出来。一般情况下,我们设计好报表后,在程序运行的时候,会将其加载到ReprotViewer控件中进... 阅读全文
posted @ 2010-08-11 10:38 代码的旋律 阅读(20381) 评论(16) 推荐(2) 编辑
摘要: 前面介绍了如何在.NET中使用RSA算法进行数据加密和签名,很多时候,我们需要重复的使用一组密钥,因此就需要将这组密钥保存起来。接下来,我给大家介绍3种在.Net中保存密钥的方法。第一种方法:将密钥导出保存为本地文件。首先要强调的是,出于安全性考虑,不建议使用这种方法保存私钥,如果使用,请在密钥导出的时候只导出公钥。RSACryptoServiceProvider对象提供了一个ToXmlStrin... 阅读全文
posted @ 2010-08-02 17:48 代码的旋律 阅读(12396) 评论(8) 推荐(6) 编辑
摘要: 一说到数据的加密,常常会涉及到这几个单词:算法、原文、密文和密钥。通常,发送者把原文通过一个加密的算法,用密钥进行加密后将密文发送给接收者,然后接收者再用密钥对密文进行解密,得到原文。由于常用的加密算法都是公开的,所以,对原文的加密的关键,就是密钥了。对于这种加解密都使用同样的密钥的算法,我们称之为对称加密,对称加密的代表算法就是DES家族了。那么这种对称加密有什么缺陷呢?由于加解密使用相同的密钥... 阅读全文
posted @ 2010-07-27 22:35 代码的旋律 阅读(18542) 评论(10) 推荐(7) 编辑
摘要: 在.Net中,如果我们在非UI线程上访问窗体上的控件的时候,会产生一个跨线程调用的异常,那么如何处理这种情况呢?在上一章中,我介绍了使用Control.Invoke方法,如果你不习惯使用委托,那么.Net还为我们提供了一个组件BackgroundWorker,你可以使用这个组件,以事件的方式去处理这种跨线程的控件访问。下面我就来详细的介绍一下这个组件的用法。我们先来看一下BackgroundWor... 阅读全文
posted @ 2010-07-22 17:31 代码的旋律 阅读(5227) 评论(4) 推荐(5) 编辑
摘要: 本文的重点在于介绍如何在多线程编程中,从非UI线程上访问界面中的控件。有过多线程编程经验的人都知道,当我们在非UI线程上试图给一个界面中的控件赋值的时候,比如说label的Text属性,系统会抛出一个下面的异常: 这是由于.Net中的大部分控件的实例都是非线程安全的,如果进行跨线程的访问,可能会造成脏数据,所以.Net默认禁止这种跨线程的赋值操作。那要如何解决这个问题呢?既然.Net禁止跨线程的赋... 阅读全文
posted @ 2010-07-19 22:48 代码的旋律 阅读(3284) 评论(1) 推荐(2) 编辑
摘要: 忙活了几天,终于把关于委托的内容写完了,我是指把我知道的关于委托的内容写完了。文章发布的一瞬间,心里有点慌,总感觉忘了什么。反正今天是周五了,工作先放放~~闭上眼睛休息的同时,也在琢磨着是否有些疏漏,好像想起点儿什么,却又抓不住,这时旁边看我文章的虾米突然问我,这委托用起来怎么这么麻烦啊?麻烦,有吗??心里一突,想起来漏掉什么了。。。委托和什么打交道最多?当然是方法。定义委托的实例需要指定方法,异... 阅读全文
posted @ 2010-07-16 17:03 代码的旋律 阅读(621) 评论(4) 推荐(0) 编辑
摘要: 上一篇文章最后的问题相信大家都已经知道了,没错,如果我们把Finish方法中的“MessageBox.Show("结束了");”改成 “label1.Text = "结束了";”会触发一个控件不能跨线程赋值的异常。对于异步调用,我们现在已经知道,它实际上是用了一个新的线程去执行异步方法,而我们的界面中的所有控件,都是在UI线程上生成了,并且,对于绝大... 阅读全文
posted @ 2010-07-16 14:15 代码的旋律 阅读(684) 评论(0) 推荐(1) 编辑
摘要: 在上文中,我介绍了如何定义委托并进行简单的调用。对于最后留下的那个问题,答案当然是否定的。但是为什么?我们用delegate关键字定义的是什么?委托类型啊(注意,是委托类型而不是委托类型的实例)。跟使用class关键字定义的其它类一样,委托类型只不过是一种相对特殊的类罢了,你什么时候见过可以在一个函数体内声明一个class了。所以,搞清楚这一点很重要,你用delegate声明的是一个类,你需要用这... 阅读全文
posted @ 2010-07-15 14:37 代码的旋律 阅读(891) 评论(3) 推荐(0) 编辑
摘要: 什么是委托?MSDN中给出的答案是“委托是一种引用方法的类型。”看到这个答案,相信很多人都会觉得不知所云,能够理解的人,您一定已经对委托很熟悉了,所以后面的内容也许并不适合您。实际上,从这个答案中,我们只需要明白两个问题就可以了,第一个问题就是“委托是一种类型”,既然委托是一种类型,那么,从直观上看,委托类型和.Net中的其它类型,如string、D... 阅读全文
posted @ 2010-07-08 10:20 代码的旋律 阅读(682) 评论(0) 推荐(3) 编辑