随笔分类 - [C#]
摘要:摘要 该接口使你能够创建现有对象的副本的自定义的实现。该接口只提供了,一个Clone方法,实现对象的浅拷贝。有浅拷贝,那么就有相对应的深拷贝。但该接口并没有对我们提供,需要我们自己实现。 什么是浅拷贝与深拷贝? 浅拷贝 将对象的字段复制到新的对象副本中,同时将字段的值也复制过去,但引用类型值复制引用
阅读全文
摘要:摘要 之前做的邮件提醒的项目,最近需要优化,由于使用了队列,但即时性不是特别好,有队列,就会出现先后的问题,最近调研了exchange 流通知的模式,所以想使用流通知模式和原先的拉取邮件的方法结合,在收到新邮件的时候,通过SyncFolderItems方法拉取当前状态下的所有邮件。 遇到的问题 在使
阅读全文
摘要:摘要 有时在操作exchange的时候,需要查找用户exchange文件夹,比如用户新建了一些文件夹。 一个例子 这里以查找用户outlook邮箱中的历史对话文件夹为例。
阅读全文
摘要:摘要 查找一些关于流通知订阅邮件的资料,这里整理一下。 核心代码块 相关资料 https://msdn.microsoft.com/en-us/library/office/dn458791(v=exchg.150).aspx https://blogs.msdn.microsoft.com/eme
阅读全文
摘要:摘要 在之前的文章中,介绍ews拉通知的模式订阅邮件。详情可阅读这篇文章:EWS 通过SubscribeToPullNotifications订阅Exchange新邮件提醒 ,可以看到拉通知的模式,是一次订阅,然后定时器不停的请求服务器。 流通知 流式处理通知依赖悬挂 get 请求在服务器上保留流订
阅读全文
摘要:摘要 async、await是在C# 5.0之后引入的一种简化异步操作的方式。使用它们之后,可以使我们的编写异步操作更加方便快捷,维护以及阅读起来更方便。 一个例子 async、await虽然简化了我们编写异步方法。但也很容易让人产生误解。首先看一个例子: 这种加了async、await叫不叫异步呢
阅读全文
摘要:摘要 在使用拉通知的方式监听exchange邮件的时候,无法监听到收件箱删除的邮件。最后通过调试发现,在删除收件箱邮件的时候,是将收件箱的邮件移动到了deleted item文件夹,会触发Moved事件,知道删除收件箱的过程,那么就好做了。 解决办法 关于拉通知的demo可以参考上篇文章的代码 EW
阅读全文
摘要:摘要 在使用EF的时候,由于表字段较多,所以在更新的时候,想要只更新变化的字段,有没有办法呢? 解决办法 代码片段 将变化的字段名称放在集合中,并修改其是否变化的状态。 通过反射的方式对变化的字段进行赋值。字段中保存变化的字段名称与值。
阅读全文
摘要:摘要 最近需要调研监控用户键盘输入的内容,然后收集数据进行用户行为分析。然后就用控制台程序弄了一个demo。 代码如下 检查是否输入流可用,可以解决阻塞的监听的问题。 测试 参考 C# 非阻塞监听键盘输入
阅读全文
摘要:摘要 有时需要获取电脑的相关信息。这时可以通过调用windows api的方式,进行获取。 方法 可以通过在powershell中 通过下面的命令进行查询,然后可以通过c#调用获取需要的信息。 gwmi + windows api 如图所示 对应的c#代码为 API和Keys枚举 Computer类
阅读全文
摘要:摘要 在使用ef做查询优化的时候我们会用到AsNoTracking方法,但如果不引入命名空间,你就会出现不包含“AsNoTracking”的定义的错误。 解决办法 引入命名空间:System.Data.Entity AsNoTracking是对IQueryable的扩展,看它的定义就可以知道,代码片
阅读全文
摘要:摘要 在开发过程中,很有可能会遇到这样的情况,服务端返回的是html的内容,但需要在客户端显示纯文本内容,这时候就需要解析这些html,拿到里面的纯文本。达到这样的目的可以有很多途径,比如自己写正则表达式,但对于没有什么规则的内容,就有点力不从心了。Html Agility Pack开源组件,可以通
阅读全文
摘要:摘要 最近要在邮件提醒功能中添加,自动回复的功能。在移动端获取用户在outlook上是否开启了自动回复功能,如果用户在outlook上开启了自动回复功能, 获取用户自动回复的内容,如果没有开启,用户可以在移动端开启自动回复并且可以设置自动回复的内容,当然,用户也可以在移动端进行关闭。 一个例子 获取
阅读全文
摘要:摘要 之前学习过c#中定时器Timer的基本用法,在使用过程中,有一个问题,一直困扰着自己,就是在初始化定时器的时候,如果设置的interval过小,或者每次执行的业务非常耗时的时候,这时候该怎么处理?第一次还没执行结束,下一次已经触发了。 基础 之前学习时的一个例子:http://www.cnbl
阅读全文
摘要:摘要 在ews中提供了一种拉通知的方式获取服务端邮件的操作,通过这种方式客户端可以订阅该通知,在邮箱有变化的时候,可以收到通知。 工作方式 EWS 通知是在订阅的基础上处理的。通常是一个订阅每个邮箱,以及邮箱订阅中您可以订阅部分或全部文件夹。您决定何种通知订阅 (流、 请求或推) 以及哪种类型的事件
阅读全文
摘要:摘要 很多情况下,都会使用windows服务做一些任务,但总会有一些异常,导致服务停止。这个时候,开发人员又不能立马解决问题,所以做一个守护者服务还是很有必要的。当检测到服务停止了,重启一下服务,等开发人员到位了,再排查错误日志。 代码 app.config 服务
阅读全文
摘要:摘要 Message Queue消息队列,简称MQ,是一种应用程序对应用程序的通信方法,应用程序通过读写出入队列的消息来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此通信。 MQ是消费-生产者模型的一个典型代表,一端往消息队列中不断写入消息
阅读全文
摘要:摘要 在项目中多多少少会用到params这个关键字,来修饰参数,它的作用,让该参数的个数是可变的,并且可变参数必须是方法的最后一个参数。但如何判断到底有没有为该参数传递值,怎么判断? 一个例子 上面的四次调用可变参数的方法,并输出可变参数的长度。如下: 如果是下面的这种情况又该输出什么? 答案是:1
阅读全文
摘要:摘要 在.Net中有几种定时器,最喜欢用的是System.Timers命名空间下的定时器,使用起来比较简单,作为定时任务,有Quartz.net,但有时候,一个非常简单的任务,不想引入这个定时任务框架,用Timer完全可以满足要求。 一个例子 每一秒在控制台上打印时间。 timer.AutoRese
阅读全文
摘要:你可以通过Exchange Web Serivice(EWS)托管API去检索从一个给定的时间点,文件夹中有变化的列表中的项。 客户端可以使用SyncFoldersItems方法,同步服务端的项目,你只需按照下面的做就可以了: 执行初始同步操作(以检索指定文件家中的所有项目的列表)。 周期性地执行随
阅读全文