WPF邮件群发工具开发
摘要:WPF邮件群发工具开发 之 实现要点说明(完结篇)附工具下载 紧接着上一篇文章“WPF邮件群发工具开发 之 进度条(属性改变通知机制)的实现”,这篇博文想把在工具开发中的实现要点跟大家交流、分享下,首先要说的是这个工具算是个Demo,实现的方法和功能都比较简单,还有不少细节需要完善... 本文目录:如何随机生成真实存在的QQ邮箱帐号?单线程的使用及注意群发工具开发综述如何随机生成真实存在的QQ邮箱帐号? 经过测试,通过C#代码发送邮件(调用SmtpClient类的Send方法,此方法无返回值,只会在发送邮箱账户错误或邮箱账户设置有问题,更多的是你用一个发送邮箱账户做群发,因为每种邮箱都...
阅读全文
支持多线程的日志记录类实现
摘要:支持多线程的日志记录类实现概述主要设计思想是通过一个共享队列,多个输入端能同时非阻塞式的向队列中增加记录信息,输出端能自动及时的把队列中的记录信息输出到控制台或是保存到文件及数据库中。多个输入端互相隔离,采用多线程实现,但考虑到缓存日志信息的是一个共享队列,自然涉及到线程间的同步问题。本文的实现模式是采用操作系统中很经典的生产者/消费者模式。线程间的同步是通过事件信号,同时对共享队列的修改进行加锁保护,避免多个线程同时修改队列。日志记录类实现整个实现除了主要的日志记录类,还要定义同步事件类封装用于线程间同步的事件对象,定义日志信息类用于生成日志信息能存于共享队列中。1. 同步事件类 SyncE
阅读全文
Windows 服务入门指南
摘要:Windows 服务入门指南有很多时候,我们需要创建Windows Service。 这篇文章可以算是一个入门指南吧,希望对初学者有帮助.要创建Windows Service, 首先选择Windows服务项目,如下图:这里我想创建一个Windows服务,定时的执行一些任务。public partial class Service1 : ServiceBase{ public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { ...
阅读全文
.NET开源压缩组件介绍与入门
摘要:.NET开源压缩组件介绍与入门【资料限时发送】1.前言作为吉日嘎拉权限管理系统最早的一批学习版用户,学了不少东西,在群里面也结识了很多朋友,更重要的是闲余时间,大家都发布很多可靠的外包工作。这次也是由于吉日嘎拉发布了一个有关“压缩组件损坏检测”的外包任务,最早在2009年用C#很简单的使用过压缩组件,这次有了这个需求,才所以才深入研究一番,顺便有了这篇博客。在日常项目开发过程中,操作Zip或者RAR压缩文件也是一件比较常见的事情。主要是打包文件,解压文件等等常规的操作,也相信很多人也用过.NET自带的GZip压缩。今天要给大家介绍的是一些开源的压缩组件的一些简单入门,由于压缩格式很多,效率也不
阅读全文
不“简单”的HttpClient
摘要:Web能够打下天下,最重要的功臣就是HTTP;HTTP能够建功立业,最重要的原因就是它的简单。微软在.NET Framework 4.5中为大家带来了System.Net.Http.HttpClient,既然叫HttpClient,我想应该迎合了HTTP简单的特性,应该会比HttpWebRequest更简单。在之前的博文“jQuery能做到,PHP能做到,C#也能做到”中也的确发现用HttpClient发起HTTP POST请求并传递url query string参数,比用HttpWebRequest更简单。于是打算把基于HttpWebRequest的实现改为基于HttpClient的实现。
阅读全文
顺序表(线性表)操作的思想及实现之C#版
摘要:顺序表(线性表)操作的思想及实现之C#版?1234567891011121314151617publicintLocateElement(T item){if(this.intPointLast==-1){Console.WriteLine("there is no element in this linear list");return-1;}for(inti = 0; i <= this.intPointLast; i++){if(this.tItems[i].Equals(item))//若是自定义类型,则T类必须把Equals函数override{return
阅读全文
委托和事件
摘要:委托和事件委托和事件这两天重新温习了一下关于委托和事件方面的知识,总结一下。一.委托委托就是能够将方法作为变量来传递。C#中使用委托的具体步骤是:(1)委托的声明。其参数形式一定要和想要包含的方法的参数形式一致。委托可以在程序运行时调用不同的方法,只要这个方法签名和委托签名保持一致。格式:[修饰符] delegate 返回类型 委托号(参数列表)例如: public delegate void MyDelegate1(string input);//无返回值 有参数 public delegate double MyDelegate2();//无参数声明一个委托的对象,与声明一个普通类对象..
阅读全文
jQuery能做到,PHP能做到,C#也能做到
摘要:jQuery能做到,PHP能做到,C#也能做到题目有些大,但文中谈到的问题很小;看似表扬C#,实际不是。这个小问题来自这样的应用场景——以HTTP POST的方式调用第三方API,第三方API不支持JSON传参,只能通过URL query string方式传参(a=1&b=2)。假设API的地址是http://www.cnblogs.com/api/say,需要传递的参数是username与words,只支持HTTP POST调用。另外,加一个约束条件——不允许用字符串拼接,比如:"username="+username+"&words="
阅读全文
优化反射性能的总结(下)
摘要:优化反射性能的总结(下)阅读目录开始用Delegate优化反射的缺点用Delegate优化反射的优点用CodeDOM优化反射的优点如何用好CodeDOM?用CodeDOM优化反射的缺点能不能不使用委托?根据反射密集程度选择优化方法CodeDOM优化的误区反射优化的总结招聘信息在前二篇博客中,我分别介绍了二种优化反射的方法:1.Delegate:委托。2.CodeDOM:动态代码生成。这是二种截然不同的方法,性能的差距也很大。今天的博客将着重比较它们的优缺点,以及给出它们的使用建议。回到顶部用Delegate优化反射的缺点在评价委托方案时,我认为有必要细分一下委托方案:1. 强类型委托,例如:A
阅读全文
一个升级程序
摘要:一个升级程序日前收到一个小任务,要做一个通用的在线升级程序。更新的内容包括一些dll或exe或、配置文件。升级的大致流程是这样的,从服务器获取一个更新的配置文件,经过核对后如有新的更新,则会从服务器下载相应的文件更新到被升级的程序目录下。如果被升级的程序在升级之前已经启动,程序则会强制关闭它,待到升级完成之后重新启动相应的程序。在升级之前程序会自动备份一次,以防升级失败造成程序不能运行。首先来的是数据实体 1 public class FileENT 2 { 3 public string FileFullName { get; set; } 4 5 ...
阅读全文
用Treeview实现FolderBrowerDialog 和动态获取系统图标
摘要:用Treeview实现FolderBrowerDialog 和动态获取系统图标(运用了Win32 dll类库)其实,FolderBrowerDialog 很好用呢,有木有啊亲。反正我特别的喜欢,微软大哥把这个浏览文件夹的东东封装的多好呀,可是遇到一个变态的客户就不好玩了。事情是这样子的。我需要做一个下面的东东:这个不难啊,然后就用FolderBrowerDialog这个神器,嗯 还不错,刚开始客户用了也很喜欢。可是过了一段时间之后,客户说要屏蔽右键功能,他不想让其他通过右键能打开或浏览文件夹,如下面 红色要给屏蔽。我一开始以为只是一个参数问题,就爽快的答应了客户咯。可是啊后来找啊找 找到天荒地
阅读全文
C#发送DKIM签名的邮件
摘要:C#发送DKIM签名的邮件DKIM(DomainKeys Identified Mail) 是一个电子邮件验证标准——域名密钥识别邮件标准,邮件系统可据此标准判断邮件是否为垃圾邮件。它的工作原理是生成私钥(private key)/公钥(public key)对,将公钥以TXT记录的形式存放在 DNS 服务器中,发送邮件时选择相应的邮件字段(比如From, To, Subject)通过私钥生成签名信息并附加到邮件头之后进行发送。目标邮件服务器收到邮件后,根据发件人的域名从 DNS 查询中得到公钥,然后用该公钥验证邮件头中的签名信息是否合法。我们通过 C# 代码成功发送了 DKIM 签名的邮件,
阅读全文
两个栈实现队列 两个队列实现栈
摘要:两个栈实现队列 两个队列实现栈为说明思想,假设队列、栈都很大,不会出现满的情况。两个栈实现队列//前提已知:struct Stack{ int top; //栈顶指针 int stacksize;//栈的大小 int *s; //栈底指针};void InitStack(Stack *s);void Push(Stack *s, int k);int Pop(*s);int IsStackEmpty(*s);int IsStackFull(*s);实现一:思路:s1是入栈的,s2是出栈的。 入队列时,直接压到s1是就行了; 出队列时,先把s1中的元素全部...
阅读全文
.net反射详解
摘要:.net反射详解概述反射通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象。反射机制允许程序在执行过程中动态地添加各种功能。运行时类型标识运行时类型标识(RTTI),可以在程序执行期间判定对象类型。例如使用它能够确切地知道基类引用指向了什么类型对象。运行时类型标识,能预先测试某个强制类型转换操作,能否成功,从而避免无效的强制类型转换异常。在c#中有三个支持RTTI的关键字:is 、 as 、typeof。 下面依次介绍他们is运算符:通过is运算符,能够判断对象类型是否为特顶类型,如果两种类型是相同类型,或者两者之间存在引用,装箱拆箱转换,则表明两种类型是兼容
阅读全文
基于JQuery、WebApi的ASP.NET MVC插件的代码生成项目主要技术解析
摘要:基于JQuery、WebApi的ASP.NET MVC插件的代码生成项目主要技术解析YbSoftwareFactory目前已可快速生成ASP.NET WebForm、MVC、WinForm和WPF的解决方案源代码,所生成的源代码可直接在VS中打开并运行。终端用户还可自行二次开发自己所需的插件。本章将对ASP.NET MVC代码生成插件所生成项目的主要特点和技术进行解析,其Demo地址:http://mvcdemo.yellbuy.com/。主要技术特点:一、数据字典的排序 有童鞋问到数据字典的排序是如何实现的,其实数据字典的排序比较简单。首先,需要定义一个排序字段,并根据这个字段升序排列。如果
阅读全文
F#示例及社区资源(译)
摘要:F#示例及社区资源(译)现在网络上已经有很多资源可以让你更好的学习F#,在这篇博文中,我会通过一些例子指出部分学习F#的出发点,提出你的疑问,并且参与到F#社区进行讨论。代码示例你可以从很多地方得到F#的代码示例,首当其冲的就有讲解语言核心和核心库的MSDN文档,其中部分主题包含相关的代码片段。对于那些希望了解更多有关F#3.0新特性(比如查询和类型提供程序),F#3.0示例包是另一个很不错的资源所在地,其中有非常多的小片段也包含一些较大的示例。MSDN演练有一些比较大的端到端的示例类似使用类型提供程序连接数据库或者web服务。在Visual Studio的“新建项目”对话框中,你也可以看到部
阅读全文
委托
摘要:写给那些看不懂委托的同学C# 从1.x 发展到目前的 4.5,委托的写法真是越来越简单精悍。如果您对这些委托的写法不是很清晰,本文可以帮助到您。委托是一种安全封装方法的类型,可以将方法作为方法的参数。委派方法的参数个数、顺序、类型及方法返回值类型必须跟定义的委托方法一样,但参数名称可以不同。1、C# 定义一个完整委托:delegate string SayMessage(string msg);static string SayHello(string Name){ return string.Format("Hello {0}", Name);}static void M
阅读全文
利用插件系统从头开发项目
摘要:利用插件系统从头开发项目利用插件系统从头开发项目本文将介绍在插件系统中,如何划分项目结构、定义软件UI框架(shell),以及和插件交互相关的接口定义方式。本文的重点不是如何开发一个plugin framework,是如何使用plugin framework。下载基于OSGi.net的Winform Shell示例代码(C#)OSGi.net SDK下载示例代码中有两个例子:SimpleShell.sln,本文就是基于此例子讲解如何使用plugin framework,仅包含最简单的插件使用方式。截图:DockPanelShell.sln,基于DockPanel开发的更加复杂的Shell。截图
阅读全文
开源Word读写组件DocX,通过word模板,导出用户简历使用示例
摘要:[原创]开源Word读写组件DocX,通过word模板,导出用户简历使用示例入门请看:【原创翻译】开源Word读写组件DocX介绍与入门[资料已发送]我也是通过看上面的入门的。1.DocX通过word模板批量导出用户简历 由于Docx有两种方法可以自定义属性:1.1通过word模板文件(在word模板中定义好自定义属性) 1.2 用代码创建word模板,并同时用代码创建自定义属性。 1.1通过word模板文件(在word模板中定义好自定义属性),自己新建一个模板文件。每个要替换的部分,都定义成自定义属性域代码如下:TAge 就为自定义属性名称代码如下: private void Creat..
阅读全文
CLR有图有迷茫
摘要:CLR只记不看笔记(一) 有图有迷茫只记不看笔记:抄书的时候为了快速记忆,会写一份笔记。对我个人而言这份笔记写过就得,很少再看。即使想复习的时候也还是习惯看书。^_^本文对于任何读者基本没啥作用,所以怕浪费时间的读者尽量去看书吧。途中画问号的是迷茫指出,敬请各路大神解答。谢谢少于200字的文章不让发布,加入以下笔记第一章 CLR 执行模型 1.1 将源代码编译成托管模块 将编译器视为语法检查 和 “正确代码”的分析器。 C# 源代码文件 --> C# 编译器 --> 托管模块(中间语言和元数据) 托管模块是一个标准的32位windows可移植执行体(PE32)文件或是64位wind
阅读全文