C#系列
changtianshuiyue
真正好的面向对象设计会分离业务逻辑和控制逻辑。
展开
-
C# ReaderWriterLock
使用一个ReaderWriterLock来实现一个同步的Cache, 以便控制对该Cache的读写. using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace ReadWriteLockSlimT原创 2013-11-25 13:39:06 · 4959 阅读 · 3 评论 -
Visual Studio 特性进阶
Visual Studio 有很多很强大的功能, 但是在我们日常开发中并不常用, 或者我们确实有需要这些功能, 但是由于没有系统研究过 VS, 以至于忽略了它的这些既有功能. 在这篇文章里,我试图记录下 VS 中那些有趣, 强大的编程开发功能, 特性.1. 快捷键1.1 Ctrl + Shift + S保存所有修改. 不只是保存当前文件的改动.1.2 Ctrl + Shift +原创 2016-05-22 11:01:27 · 905 阅读 · 0 评论 -
ListCollectionView.Refresh issue
最近项目里面发现的一个bug。我们用 ListCollectionView 作为ListBox 的数据源,但是发现在增加和删除 ListCollectionView 中的数据时,它和它的 SourceCollection 数据不同步。 在删除的时候 SourceCollection 已经没有那一项,但是 ListCollectionView 中还是有。 本来以为是 ListCollectionView 的bug, 所以就尝试每次修改数据内容时都 CommitNew(), CommitEdit(), 然后 R原创 2015-05-19 22:30:52 · 1432 阅读 · 0 评论 -
C# Unity 对于泛型接口的支持
所以用户实现我们框架开放出去的接口后,我们只能通过反射来获取用户的实现类。这样一个问题就是我们虽然定义了接口, 但其实我们依然依赖于用户的实现,同时框架启动异常的慢。原创 2015-03-21 22:45:04 · 8768 阅读 · 1 评论 -
The C# Memory Model in Theory and Practice
The C# Memory Model in Theory and PracticeIgor Ostrovsky This is the first of a two-part series that will tell the long story of the C# memory model. The first part explains the guaran转载 2015-03-05 21:21:30 · 1389 阅读 · 0 评论 -
HTTP/Socket .etc protocols implements in C#
HTTP vs TCP/IPHTTP vs Socket原创 2015-03-04 16:55:03 · 968 阅读 · 0 评论 -
JQuery 导入导出 Excel
从数据库中查询数据放在 HTML Table 中. 现在想要从这个 table 中导出数据来. 另外用户需要选择导出的列.原创 2014-11-05 10:56:52 · 89337 阅读 · 12 评论 -
C# 接口中能否定义字段?
语法上不允许。 也不符合接口的目标。 接口可以看成是对实现的约束, 而字段是实现细节。 接口对外部暴露时, 不应该暴露实现细节。原创 2014-10-13 09:31:31 · 7607 阅读 · 0 评论 -
ASP.NET 项目总结
恩,第一次用 ASP.NET MVC 开发正式项目。好累。一直在抠细节, 现在把这一个礼拜学到的东西总结下, 新手要多总结!原创 2014-11-09 22:23:07 · 3328 阅读 · 2 评论 -
C# Timer类
C# 有三种不同的Timer类1.Threading.Timer2.Timer.Timer3.Forms.Timer原创 2013-11-01 18:05:13 · 2421 阅读 · 0 评论 -
Quartz.NET c# 教程 - 课程五:SimpleTrigger
如果你只需要你的 job 在某个特定的时刻执行一次, 或者在某一个时刻重复执行几遍, SimpleTrigger 完美解决你的需求.SimpleTrigger 的属性包括以下几点: start-time, end-time, repeat count, 以及 repeat interval. repeat count 可以是0或者正整数, 或者 SimpleTrigger.Repe翻译 2016-05-29 21:15:17 · 5202 阅读 · 0 评论 -
Quartz.NET c# 教程 - 课程四:Triggers
和 jobs 一样, triggers 用起来也简单, 但是也有一些定制化的选项需要了解, 否则很难充分发挥 Quartz.NET 的功能. 另外, 也有很多不同类型的 trigger, 可以满足各种 scheduling 需求.Common Trigger Attributes所有的trigger 类, 除了有唯一的 TriggerKey 属性外, 还有别的共同属性. 这些属性值翻译 2016-05-26 22:34:20 · 2624 阅读 · 0 评论 -
.Net内存泄露原因及解决办法
1. 什么是.Net内存泄露(1).NET 应用程序中的内存您大概已经知道,.NET 应用程序中要使用多种类型的内存,包括:堆栈、非托管堆和托管堆。这里我们需要简单回顾一下。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。在运行库的控制下执行的代码称作托管代码。相反,在运行库之外运行的代码称作非托管代码。COM 组件、ActiveX转载 2016-09-13 22:27:33 · 3806 阅读 · 0 评论 -
MSTest 无法退出
最近给系统配置持续集成工具. 我们用 Stash 做源码管理, 用 TeamCity 来做编译, 并通过 TeamCity 来分析单元测试覆盖率和代码质量, 把结果发布到 sonar 页面上面. 在 TeamCity 里面, 我们配置了 VS Test Runner --> MSTest 来运行单元测试. 现在的问题是我们所有的单元测试都能够通过. 但是 MSTest.exe 运行完不能正常退出,原创 2016-07-26 23:57:35 · 957 阅读 · 0 评论 -
Parallel dev: .NET SynchronizationContext 二三事
原文地址:https://msdn.microsoft.com/magazine/gg598924.aspx今天开发遇到一个问题,stack overflow上有很简单的解决办法,但是我同事发现用那个解决办法有可能导致ui操作无法在ui线程上执行。具体问题如下:1. TaskScheduler scheduler = TaskScheduler.FromCurrentSyn原创 2015-11-04 21:37:32 · 1288 阅读 · 0 评论 -
Task and Await: Consuming Awaitable Methods
Task and Await: Consuming Awaitable MethodsThere's a lot of confusion about async/await, Task/TPL, and asynchronous and parallel programming in general. I've had some requests to dive into转载 2016-05-22 22:16:38 · 777 阅读 · 0 评论 -
Visual Studio 使用技巧, 功能与特性
Visual Studio 有很多很强大的功能, 但是在我们日常开发中并不常用, 或者我们确实有需要这些功能, 但是由于没有系统研究过 VS, 以至于忽略了它的这些既有功能. 在这篇文章里,我试图记录下 VS 中那些有趣, 强大的编程开发功能, 特性.1. 快捷键1.1 Ctrl + Shift + S保存所有修改. 不只是保存当前文件的改动.1原创 2016-05-22 11:22:19 · 2941 阅读 · 0 评论 -
Quartz.NET c# 教程 - 课程六:CronTrigger
如果你需要类似日历时间的触发工作: 像 每周五中午, 工作日早上9点, 或者每周一早上9~10点间每隔5分钟之类的, 你可以选择用 CronTriggers.和 SimpleTrigger 一样, CronTrigger 也有一个 startTime 来指定启动时间和 endTime 来指定结束时间.Cron ExpressionsCron-Expressions 用来配置翻译 2016-06-02 22:12:05 · 2845 阅读 · 0 评论 -
Quartz.NET c# 教程 - 课程三:Jobs 和 JobDetails
jobs 很容易实现. 关于它,你还需要了解 Execute(..) 和 JobDetails.当你的 job 类知道需要做什么操作后, Quartz.NET 就需要知道执行该 job 实例的一些属性(attribute). 这些属性可以通过 jobdetail 来定义.JobDetail 实例用 JobBuilder 类来构建. JobBuilder 允许你通过 fluent i翻译 2016-05-17 21:49:39 · 9066 阅读 · 0 评论 -
Quartz.NET c# 教程 - 课程一: 使用 Quartz
课程一: 使用 Quartz在使用 scheduler 之前, 需要进行初始化。直接使用 ISchedulerFactory 的实现即可。翻译 2014-10-10 15:09:46 · 11317 阅读 · 0 评论 -
Quartz.NET c# 教程 - 课程二:Jobs 和 Triggers
Quartz API 的主要接口和类如下:IScheduler - 和 Scheduler 交互的主要接口.IJob - 自定义的执行模块所要继承的接口, scheduler 会调用这个实现该接口的模块.IJobDetail - 用来定义 Job 实例.ITrigger - 用来定义 schedule 的模块, 根据该模块中的 schedule 来决定哪个 job 应该执行.JobBuilder - 用来构建 JobDetail 实例.TriggerBuilder - 用来构建 Trigger翻译 2016-05-09 22:36:35 · 7661 阅读 · 0 评论 -
Sqlite笔记2--Sqlite在C#中的应用
Sqlite Helper类:using System;using System.Collections.Generic;using System.Data;using System.Data.SQLite;using System.Windows.Forms;class SQLiteDatabase{ String dbConnection; ///原创 2013-11-11 10:34:16 · 1282 阅读 · 0 评论 -
TCP flow control and asynchronous writes
TCP flow control and asynchronous writesBy Len>June 9, 2011 10:10 PM| 0 Comments | 1 TrackBack To enable network applications to send and receive data via a TCP connection reliably and e转载 2013-12-25 21:52:24 · 1438 阅读 · 0 评论 -
Performance Counter 使用
1. 定义计数器元数据数组,用来记录所有计数器的元数据(自定义计数器的类型,名字,提示字段)CounterCreationDataCollection CCDC = new CounterCreationDataCollection();2. 定义具体计数器元数据,并加入到元数据数组中CounterCreationData subscriptionQueueCounter = new原创 2014-03-03 19:10:54 · 2152 阅读 · 0 评论 -
C# 零碎笔
系统全局资源使用1. 定义全局资源文件 resource.resx2. 定义 ResourceManager 实例, 用该实例获取全局资源ResourceManager rm = new ResourceManager("WspSharedQueue.WspSharedQueue", Assembly.GetExecutingAssembly());var timeout=rm.原创 2014-03-06 14:24:55 · 1210 阅读 · 0 评论 -
C# 多线程多参数和返回值用法
C# 多线程多参数和返回值用法原创 2014-02-18 19:21:22 · 28598 阅读 · 0 评论 -
Connection reset by peer: socket write error
今天做两个页面:一个通过扫描仪扫描纸质文件保存到本地,并上传到数据库。另一个从数据库中获取扫描件。两个页面都有预览图片的功能。由于扫描控件扫描进来的图片是侧着放的,而且图片太小,需要旋转扫描件并放大。放大的问题:通过JS实现放大,使用标签,放大很容易写,因为div的大小是可以随机设置的。只需获取img对象再设置height,width即可。使用自定义标原创 2012-12-19 18:33:11 · 3859 阅读 · 0 评论 -
C# Mutex,Semaphore
MutexMutex 类似于C# lock, 区别在于一个Mutex可以在多个进程间使用.也就是说Mutex既是computer-wide又是application-wide.注意: 获取和释放Mutex大概比lock要多五十倍时间.调用WaitOne()来获得锁, ReleaseMutex()来解除锁.关闭或者杀死Mutex会自动释放掉锁.和lock一样, Mutex只能从拥有它的线翻译 2013-12-18 22:20:32 · 3605 阅读 · 0 评论 -
Supported Code Changes (C#)
Edit and Continue handles most types of code changes within method bodies. Most changes outside method bodies, and a few changes within method bodies, cannot be applied during debugging, however. To a转载 2014-05-02 15:46:10 · 824 阅读 · 0 评论 -
C# 异步操作
using System;using System.Net;using System.Threading;using System.Text;using System.IO;//Request 类用于通过//异步调用传递数据public class RequestState{ const int BUFFER_SIZE = 1024; pub原创 2013-09-18 21:22:48 · 3479 阅读 · 0 评论 -
C# 配置文件管理
试用C# System.Configuration包中的配置管理类来进行配置管理。 步骤如下:首先实现ConfigurationManagerBase,IConfigurationSource用于获取section实例。1.实现一个继承自ConfigurationElement的类,表示在配置文件中的一个配置节点里一条配置。2.实现一个继承自ConfigurationEleme原创 2013-09-20 14:40:29 · 1598 阅读 · 0 评论 -
Task vs Func vs Action vs Predicate
Task 类代表异步操作,使用Task可以方便的实现CPU消耗操作的同步或者异步操作。public static Task> TrackedSequence(this TaskFactory factory, params Func [] functions)public Task ContinueWhenAll(Task[] tasks, Action[]> continuationAc翻译 2014-03-02 20:21:37 · 1388 阅读 · 0 评论 -
Sqlite笔记3--C#中事务支持
在C#中使用Sqlite增加对transaction支持原创 2013-11-11 10:50:20 · 4245 阅读 · 0 评论 -
C#+低级Windows API钩子拦截键盘输入
摘要 在家里,婴儿和其它动物可能会重击你的计算机键盘,致使出现各种无法预言的结果。本文中的这个C#示例应用程序将向你展示如何基于Windows钩子API来实现在击键造成任何危害之前捕获它们。 一. 简介 猫和婴儿有很多共同之处。他们都喜欢吃家中养植的植物,都非常讨厌关门。他们也都爱玩弄你的键盘,结果是,你正发送给你的老板的电子邮件可能是以半截句子发送出去的,你的Excel帐原创 2013-07-13 15:43:09 · 3994 阅读 · 2 评论 -
C# 自定义事件
C#自定义事件和java有所不同,涉及到委托。下面代码包括自定义事件从事件定义到事件触发和执行的全过程。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Timers;//using System.Timers;namespace原创 2013-07-09 19:30:28 · 5324 阅读 · 1 评论 -
.NET笔记
1. 连接本地数据库的语句 string str_conn = "server=.;database=Employees;Trusted_Connection=SSPI;";2. 使用DataSet获取数据库返回的数据string str_conn = "server=.;database=Employees;Trusted_Connection=SSPI;"; stri原创 2013-03-06 09:26:01 · 771 阅读 · 0 评论 -
C#使用全局钩子(hook),SetWindowsHookEx返回0、不回调的解决
在.net 2005平台下 在使用全局hook时,总是遇见SetWindowsHookEx的返回值为0,而且在:DllImport的SetLastError选项 = true的时候,调用Marshal.GetLastWin32Error() 也返回0,那么就看看是否这个原因:因为VS的调试模式的问题。1.试试禁用宿主进程能否解决:1). 在 Visual Studio 中打开项转载 2013-07-13 09:57:31 · 7937 阅读 · 0 评论 -
Getting started with SQLite in C#
This tutorial will teach you how to create and connect to an SQLite database in C#. You will also learn how to create and modify tables and how to execute SQL queries on the database and how to read t翻译 2014-03-27 16:32:13 · 870 阅读 · 0 评论 -
C# 线程同步问题
在现实生活中,假设有一个生产者和一个消费者。生产者生成货物存储在货物栈中,消费者从货物栈中取货物。假设生产者的生成速度超过消费者消费速度,则货物栈会在某一个时刻被装满,此时生产者若继续生产会导致两种情况:货物栈溢出;货物栈中已有货物被替换。假设消费者的消费速度超过生产者的生产速度,则货物栈会在某一个时刻被取空,此时消费者若继续消费会导致消费者得到的货物为空。实现生产者消费者同步的目的在于使得生产者原创 2013-10-24 16:33:23 · 1108 阅读 · 1 评论 -
C# EMS Client
从 C# 客户端连接 Tibco EMS下面例子简要介绍 C# 客户端怎样使用 TIBCO.EMS.dll 来连接 EMS 服务器.using System;using System.Diagnostics;using System.Threading;using TIBCO.EMS;namespace TestEMS{ class Program {翻译 2014-01-02 17:45:48 · 2455 阅读 · 0 评论