c#使用多线程的几种方式示例详解

(1)不需要传递参数,也不需要返回参数 ThreadStart是一个委托,这个委托的定义为void ThreadStart(),没有参数与返回值。 复制代码代码如下: class Program{ static void Main(string[] args) { for (int i = 0; i < 30; i++) { ThreadStart threadStart = new ThreadStart(Calculate); Thread thread = new Thread(threadStart); thread.Start(); } Thread.Sleep(2000); Console.Read(); } public static void Calculate() { DateTime time = DateTime.Now;//得到当前时间 Random ra = new Random();//随机数对象 Thread.Sleep(ra.Next(10,100));//随机休眠一段时间 Console.WriteLine(time.Minute + ":" + time.Millisecond); } } (2)需要传递单个参数 ParameterThreadStart委托定义为void ParameterizedThreadStart(object state),有一个参数但是没有返回值。 复制代码代码如下: class Program{ static void Main(string[] args) { for (int i = 0; i < 30; i++) { ParameterizedThreadStart tStart = new ParameterizedThreadStart(Calculate); Thread thread = […]

龙生   11 Sep 2016
View Details

MySQL DATEDIFF() 函数

定义和用法 DATEDIFF() 函数返回两个日期之间的天数。 语法

date1 和 date2 参数是合法的日期或日期/时间表达式。 注释:只有值的日期部分参与计算。 实例 例子 1 使用如下 SELECT 语句:

结果: DiffDate 1 例子 2 使用如下 SELECT 语句:

结果: DiffDate -1   from:http://www.w3school.com.cn/sql/func_datediff_mysql.asp

龙生   08 Sep 2016
View Details

MySql四舍五入

FLOOR(X) 返回不大于X的最大整数值。 mysql> select FLOOR(1.23); -> 1 mysql> select FLOOR(-1.23); -> -2 注意返回值被变换为一个BIGINT! CEILING(X) 返回不小于X的最小整数值。 mysql> select CEILING(1.23); -> 2 mysql> select CEILING(-1.23); -> -1 注意返回值被变换为一个BIGINT! ROUND(X) 返回参数X的四舍五入的一个整数。 mysql> select ROUND(-1.23); -> -1 mysql> select ROUND(-1.58); -> -2 mysql> select ROUND(1.58); -> 2 注意返回值被变换为一个BIGINT! ROUND(X,D) 返回参数X的四舍五入的有D为小数的一个数字。如果D为0,结果将没有小数点或小数部分。 mysql> select ROUND(1.298, 1); -> 1.3 mysql> select ROUND(1.298, 0); -> 1 注意返回值被变换为一个BIGINT! from:http://www.cnblogs.com/youyou/archive/2005/11/07/270783.html

龙生   08 Sep 2016
View Details

卢庚戌

卢庚戌,1970年12月21日出生于辽宁省营口市,毕业于清华大学建筑系,中国流行男歌手,创作歌唱组合水木年华的主唱,民谣才子。为乐队团长、主唱、作词、作曲、编曲、编曲创意。 2010年水木年华签约英皇,成为英皇旗下的一员。代表作品有《蝴蝶花》、《一生有你》、《在他乡》、《完美世界》、《渴望就是力量》等。 早年经历 1989年以市理科状元的身份进入清华大学建筑系。 1994年大学毕业后,辞去工作一直追求音乐,却屡屡碰壁。直到2000年发行个人专辑《未来的未来》。 2001年组成水木年华至今,经历过两次人员变动。 2010年开始构思并创作剧本《怒放》,历经三年完成电影的拍摄和制作。 1989年从营口市高级中学以营口市理科第一名的成绩考取清华大学建筑系。入校后受校园原创音乐的影响喜欢上音乐,并开始学习吉他。 1990年参加校吉他大奖赛获得第二名。同年加入校文学社和文艺社团合唱队。 1991年与几个同学成立校园歌曲协会,在高校间频频举办演唱活动。当时经常参与活动的有后来成为校园民谣主将的高晓松、沈庆、郁冬等。同年开始尝试写歌。 1992年在校成立“梦中草原”合唱团,并获得当年北京市高校歌曲比赛一等奖。 1993年写出三重唱歌曲《成长》参加当年北京市高校歌曲比赛获得一等奖,此后常在各高校演出。 1994年参加中央电视台、北京电视台等晚会节目的录制。参加校园民谣的录制并成功举办“梦中草原”清华演唱会。同年毕业。 1995年-1997年在北京某设计院担任建筑设计师。 1998年成功举办个人清华快乐园演唱会,结识当时广州著名音乐人陈梓秋,在陈梓秋帮助下开始筹划个人专辑。 演艺经历 1999年制作个人专辑《未来的未来》。 2000年签约北京喜洋洋文化发展有限公司,同年发行个人专辑《未来的未来》。 2001年与校友李健成立“水木年华”演唱组。 2001年9月发行水木年华专辑《一生有你》,并获得当年几乎全部年度最佳新人奖。 2002年6月发行水木年华专辑《青春正传》,同年李健离队,缪杰、姚勇加入。 2003年1月发行水木年华专辑《新歌+精选》,并出版发行个人书籍《水木年华——音乐·清华·我》。同年姚勇离队。 2004年5月发行水木年华限量版专辑《毕业纪念册》;同年10月发行水木年华全新专辑《70.80》。 2005年5月发行水木年华DJ版专辑《跳舞专辑》。同年10月发行水木年华单曲《完美世界》(此歌曲为国内自主开发的大型网络游戏“完美世界”的主题曲)。 2006年4月发行水木年华专辑《生命狂想曲》;同年5月13日水木年华举行“生命之狂想”2006.5.13北京演唱会;7月发行水木年华演唱会唱片《完美世界水木年华生命之狂想2006.5.13北京演唱会》;10月水木年华为“共同关注希望工程—圆梦行动”创作主题歌“给我一双翅膀”,并发行水木年华宣传版单曲《给我一双翅膀》;12月发行水木年华精装版专辑《生命狂想曲三碟精装版》。 2007年5月发行水木年华专辑《双重幻想》,同年水木年华举行“完美时空最好的年华”2007水木年华全国巡回演唱会。 2008年2月发行水木年华演唱会唱片《完美时空最好的年华水木年华演唱会现场版》,同年5月发行水木年华宣传版EP《生命的挑战》。(此歌曲为水木年华为北京奥运创作的歌曲,也是央视栏目“想挑战吗?”的主题曲)。 2009年3月发行个人珍藏版专辑《未来的未来》。 2009年5月发行水木年华EP《启程》。 2009年9月发行水木年华EP《生命的意义》,并亲自执导此歌的MV。 2010年1月6日发行水木年华单曲《宝贝,你听到了吗?》(此歌曲为2009年儿童喜剧电影《火星宝贝之火星没事》的主题曲),1月9日水木年华签约英皇,成为英皇旗下的一员,05月11日发行水木年华全新专辑《启程》 ,12月发行水木年华单曲《新年快乐》。 2011年6日发行水木年华单曲《渴望就是力量》(此歌曲为增爱百事校园行活动主题曲)。 作品情况 个人作品 专辑曲目词曲补充说明 2000.08《未来的未来》(卢庚戌) 01. 《未来的未来》(词:卢庚戌 / 曲:卢庚戌 / 编曲:刘君利 / 贝司:刘君利 / 和声:卢庚戌 缪杰) 02. 《蝴蝶花》(词:卢庚戌 / 曲:卢庚戌 / 编曲:苏沐 / 吉他:刘林 / 大提琴:苏桐 / 和声:芭比娃娃) 03. 《游乐场》(词:卢庚戌 / 曲:卢庚戌 / 编曲:刘君利 / 吉他:刘君利 / 贝司:刘君利 / 和声:缪杰) 04. 《恋爱十日谈》(词:卢庚戌 / 曲:卢庚戌 / 编曲:卢庚戌 刘君利 / 吉他:卢庚戌 刘君利) 05. 《平安大街》(词:卢庚戌 / 曲:卢庚戌 / 编曲:刘君利 […]

龙生   08 Sep 2016
View Details

WIN10的桌面背景的BUG

龙生   07 Sep 2016
View Details

Asp.net+Mysql,查询出错:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败

在网上看到的解决方案基本都是说host文件中127.0.0.1 localhost 的对应, 但我查看了host文件,并没有问题,纠结半天,拿查询语句在Mysql Workbench上执行,报了一个错,说是子查询包含多个结果,我去~!这很简单的一个错误asp.net竟然没能准确反馈。 于是在子查询语句后面加limit 1,Ok~ 所以,出现“由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败”这个错误时,有可能是查询语句有问题,而不是连接有问题。 from:http://blog.csdn.net/idoiknow/article/details/8923553

龙生   07 Sep 2016
View Details

NPOI读写Excel

1、整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet;行:Row;单元格Cell。 2、NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 3、POI读取Excel有两种格式一个是HSSF,另一个是XSSF。 HSSF和XSSF的区别如下: HSSF is the POI Project’s pure Java implementation of the Excel ’97(-2007) file format. XSSF is the POI Project’s pure Java implementation of the Excel 2007 OOXML (.xlsx) file format. 即:HSSF适用2007以前的版本,XSSF适用2007版本及其以上的。 下面是用NPOI读写Excel的例子:ExcelHelper封装的功能主要是把DataTable中数据写入到Excel中,或者是从Excel读取数据到一个DataTable中。 ExcelHelper类:

测试代码:

Excel相关DLL下载:NPOI-Lib.rar   1.NPOI下载地址:http://npoi.codeplex.com/releases/view/38113 2.NPOI学习系列教程推荐:http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html   参考: http://www.cnblogs.com/Erik_Xu/archive/2012/06/08/2541957.html http://www.cnblogs.com/linzheng/archive/2010/12/20/1912137.html http://www.cnblogs.com/knowledgesea/archive/2012/11/16/2772547.html   from:http://www.cnblogs.com/luxiaoxun/p/3374992.html

龙生   06 Sep 2016
View Details

Entity Framework – 直接执行数据库命令

原文地址: http://msdn.microsoft.com/en-us/library/gg715124(v=vs.103)   使用 EF 4.1 或者更新版本, 你可以直接执行任何数据库命令. 在本节介绍的方法允许你对数据库执行原生的 SQL 命令.   通过 SQL 查询语句获取实体对象集 DbSet 类中的 SqlQuery 方法允许你执行一个返回实体对象集的原生 SQL 查询. 默认情况下, 返回的对象集会被上下文跟踪; 这可以通过对方法返回的 DbSqlQuery 对象调用 AsNoTracking 方法取消.返回的结果集一般为 DbSet 所对应的类型, 否则即便是其派生类也无法返回. 如果所查询的表包含了其他实体类型的数据, 那么所执行的 SQL 语句应该被正确书写, 保证只返回指定类型实体的数据. 下面的例子使用 SqlQuery 方法执行了一个 SQL 查询, 返回一个 Department 类型的实例集.

译注: AsNoTracking 方法必须再查询执行前调用, 查询执行后调用无效. 通过 SQL 查询获取非实体对象集 通过 Database 类中的 SqlQuery 方法来执行原生 SQL 命令, 可以返回任何类型的实例, 包括 .Net 中的原生类型. 但获取的数据将不会被上下文对象跟踪, 即使我们用这个方法来检索实体对象. 如:

让数据库执行原生的非查询 SQL 命令 可以通过 Database 类中的 ExecuteSqlCommand 方法执行非查询命令. 例如:

ExecuteSqlCommand 方法有时会被用在 Code First 创建的数据库的初始化函数中, 用来对数据库进行一些额外的配置 (例如, 设置索引). 需要注意的是, 上下文对象并不知道执行了 ExecuteSqlCommand […]

龙生   03 Sep 2016
View Details

如何在EF中直接运行SQL命令

相信不少使用EF的同志们已经知道如何在EF中运行SQL命令了。我在这里简单总结下,希望对大家学习EF有所帮助! 在 EF第一个版本(.NET 3.5 SP1)中,我们只能通过将ObjectContext.Connection转换为EntityConnection,再把 EntityConnection.StoreConnection转换为SqlConnection。有了这个SqlConnection,我们再创建 SqlCommand便能顺利运行SQL命令了。(个人觉得其实很烦,呵呵) 例如: EntityConnection entityConnection = (EntityConnection)ctx.Connection; DbConnection storeConnection = entityConnection.StoreConnection; DbCommand cmd = storeConnection.CreateCommand(); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.CommandText = "[PRO_USER_DIGITALCARD_CHECK]"; 。。。。。。。 在EF4(.NET 4)中,我们有了全新的API:ObjectContext.ExecuteStoreCommand(…)和 ObjectContext.ExecuteStoreQuery<T>(…)。从函数名不难知道前者是为了执行某一并无返回集的SQL 命令,例如UPDATE,DELETE操作;后者是执行某一个查询,并可以将返回集转换为某一对象。 using (var ctx = new MyObjectContext()) { ctx.ExecuteStoreCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1"); } using (var ctx = new MyObjectContext()) { var peopleViews = ctx.ExecuteStoreQuery<PersonView>("SELECT PersonID, Name FROM Person"); } public class PersonView { public int PersonID { get; set; } public string Name { get; set; } } 现在有了EF4.1,API的名字又有了些许改变。如果说DbContext将ObjectContext做了包装,那么DbContext.Database就是对应于数据库端信息的封装。执行SQL命令也自然从Database类型开始。对应于ExecuteStoreCommand和ExecuteStoreQuery<T>的是Database.ExecuteSqlCommand和Database.SqlQuery<T>。 using (var ctx = new MyDbContext()) { ctx.Database.ExecuteSqlCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1"); } using (var ctx = new MyDbContext()) { var peopleViews = ctx.SqlQuery<PersonView>("SELECT PersonID, Name FROM Person").ToList(); } public class PersonView { public int PersonID { get; set; } public string Name { get; set; } } from:http://www.cnblogs.com/chengxiaohui/articles/2092001.html

龙生   03 Sep 2016
View Details

EntityFramework.BulkInsert扩展插入数据和EF本身插入数据比较

扩展下载地址:http://efbulkinsert.codeplex.com/ 注意同时安装依赖项目,不然会报错,还有,程序中有同一个dll的其他版本,那就可能一次安装不上,得一个一个安装依赖的dll Install-Package EntityFramework.MappingAPI -Version 6.0.0.7 Install-Package EntityFramework.BulkInsert-ef6 EntityFramework.BulkInsert插入数据和EF比较 初步猜测,它应该只是把多个sql合成一个,不管怎么优化,总该最后生成的是sql。 例如:20条数据,ef调试时看到的是一次连接,20次执行sql,这个批量,估计是一次连接,20个sql组合放到一个字符串提交,这样能减少时间。 再优化也不可能把sql给减少,同一sql在数据库中执行时间也不是EF能减少的。 实测(222数据库,表FinanceReceipts): 用Stopwatch监视执行时间(单位毫秒) 一次插入200条单据测试 EF插入耗时:11,086 BulkInsert插入耗时:740 一次插入10000条单据测试 EF插入耗时:510,640 BulkInsert插入耗时:3,200 通过看代码,和猜测的实现方式差不多,不过,代码中有表映射,为什么有这些功能? 因为 Insert 比数据库自带的 SqlBulkCopy 功能慢, EntityFramework.BulkInsert扩展在优化语句传输次数的同时,也采用了速度更快的 SqlBulkCopy 去将数据插入数据库,所以在插入大数据量时,比起EF本身的插入数据,可以说快得“离谱”。 不过,利用这个SqlBulkCopy快速插入数据,也就只能在插入上有改进,对于Update,Delete数据,速度上没有什么改进的 //批量插入测试代码 [csharp] view plain copy print? StringBuilder sb = new StringBuilder(); FinanceReceipts model = ReceiptsRepository.Entities.Include(o => o.FinanceReceiptDetail).Include(o => o.FinanceBillLog).First(o => o.ReceiptId == 214539); int createCount = 10000; model.ReceiptId = 0; model.ReceiptStatus = -1; model.ReceiptNo = ""; model.FinanceBillLog.OpenSafe().ToList().ForEach(m => m.ReceiptId = 0); model.FinanceReceiptDetail.OpenSafe().ToList().ForEach(m => m.ReceiptId = 0); model.ActualCreateTime = DateTime.Now; List<FinanceReceipts> entities = new List<FinanceReceipts>(); for (int i = 0; i < createCount; i++) {     FinanceReceipts temp = model.DeepCopy();     model.ReceiptNo = "ef" + i;     entities.Add(temp); } Stopwatch sw = new Stopwatch(); sw.Start(); ReceiptsRepository.Insert(entities); sw.Stop(); sb.AppendFormat("EF插入耗时:{0}\r\n", sw.ElapsedMilliseconds); model.ActualCreateTime = DateTime.Now; List<FinanceReceipts> entities2 = new List<FinanceReceipts>(); for (int i = 0; i < createCount; i++) {     FinanceReceipts temp = model;     model.ReceiptNo = "bi" + i;     entities2.Add(temp); } sw.Restart(); var ctx = (this.UnitOfWork as UnitOfWorkContextBase).DbContext;     using (var transactionScope = new TransactionScope())     {         // some stuff in dbcontext         ctx.BulkInsert(entities2);         ctx.SaveChanges();         transactionScope.Complete();     } sw.Stop(); sb.AppendFormat("BulkInsert插入耗时:{0}\r\n", sw.ElapsedMilliseconds); string ret = sb.ToString(); 插入100条,每次插入一条,循环插入测试 第1次: EF插入耗时:9006 BulkInsert插入耗时:4173 第2次: EF插入耗时:8738 BulkInsert插入耗时:3806 第3次: EF插入耗时:8784 BulkInsert插入耗时:3727 BulkInsert还是比EF本身插入数据稍微快一点,总的来说: […]

龙生   03 Sep 2016
View Details
1 256 257 258 415