
C# 技术经验
悠悠小跑
一个老程序员
展开
-
MQTT学习
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件。MQTT特点MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性...转载 2019-04-19 15:04:42 · 291 阅读 · 0 评论 -
用LockBits方法访问图像数据
位图类包含LockBits和相应的UnlockBits方法,我们可以使用这个方法在内存中指定一片区域来存储位图的像素数据,可以通过访问这块内存来对位图中的像素数据进行修改。LockBits返回BitmapData类,这个类描述了位图在指定内存中存储数据的布局与位置。 BitmapData类包含如下重要属性: Scan0:指定内存区域的首地址; Strid转载 2015-08-27 16:26:50 · 1737 阅读 · 0 评论 -
C# 图片处理心得
做Windows form软件开发的时候碰到了图片处理。分享一些图片转换的方法。32bpp转24bpp public static Bitmap Convert32bppTo24bpp(Bitmap bmpSource) { Bitmap bmpDest = null; //When 32 bpp bitmap, conver原创 2016-03-26 13:35:02 · 3390 阅读 · 0 评论 -
C# Bitmap rle格式解析
BI_RLE8(Run-Length-Encoded 8bits/pixel)连续颜色的表示第一位:1~255 表示出现颜色个数第二位:颜色编码例:0x03 0x0D => 0x0D 0x0D 0x0D0x01 0x2F => 0x2F换行终止符0x00 0x00 换行符号0x00 0x01 文件末尾符号移动指针符号0x0转载 2016-09-09 16:44:20 · 830 阅读 · 0 评论 -
SQL、LINQ和Lambda表达式
学习到了,转载一下,总结的很好。※查询全部内容1 查询Student表的所有记录。2 select * from student3 Linq:4 from s in Students5 select s6 Lambda:7 Students.Select( s => s) 1234567※按列查询select sname,ssex转载 2016-03-26 17:02:58 · 348 阅读 · 0 评论 -
推荐一个C#调用winapi的帮助网站
http://www.pinvoke.net/index.aspx这个网站包括了所有struct和api函数的调用转载 2016-03-26 13:30:03 · 539 阅读 · 0 评论 -
多线程学习资料
http://www.cnblogs.com/huangxincheng/category/368987.html转载 2015-09-24 15:05:33 · 318 阅读 · 0 评论 -
Log4net使用
log4net使用简介当我们开发软件时,一般都会加入运行期的跟踪手段,以方便后续故障分析和Bug调试。.net framework本身提供了一个System.Diagnostics.Trace类来实现流程跟踪功能,但很多时候却不能满足我们的需求,这时往往需要一个更加强大的第三方日志系统。前段时间在项目中使用了log4net来记录日志,感觉还不错,这里简单的介绍一下它的用法。使用转载 2015-09-18 16:52:12 · 435 阅读 · 0 评论 -
C# BackgroundWorker的使用
BackgroundWorker 可以用于启动后台线程。主要的事件及参数: 1.DoWork——当执行BackgroundWorker.RunWorkerAsync方法时会触发该事件,并且传递DoWorkEventArgs参数; 2.RunWorkerCompleted——异步操作完成或中途终止会触发该事件。如果需要提前终止执行后台操作,可以调用BackgroundWo转载 2015-10-08 10:33:48 · 356 阅读 · 0 评论 -
一些比较好的开源网站
推荐一个技术论坛http://www.codeproject.com/转载 2014-06-16 17:14:18 · 1122 阅读 · 0 评论 -
List View在XP中闪烁刷新问题解决
XP中ListView的图片刷新和Win7, Win8不同,导致闪烁。解决方法是重载WndProc方法。 //Flag for painting if inner painting or customer painting private bool isInWmPaintMsg = false; #region NMHDR ///转载 2015-08-19 13:59:40 · 617 阅读 · 0 评论 -
C# 调用window api大全
Win32API.cs 源码下载 http://files.cnblogs.com/lordeo/win32api.rarusing System;using System.Drawing;using System.Runtime.InteropServices;using Lordal.Window.Form.Lib.General;u转载 2015-08-19 11:49:06 · 5299 阅读 · 0 评论 -
Bitmap结构详解
由於工作需要,研究了一下點陣圖的檔案格式。發現網路上的資料大多不夠齊全,或者範例太含糊。我將所有找到的資料消化/整理/翻譯之後如下,希望對需要的人有幫助:*******************************************《簡介》點陣圖(bitmap)格式是 Windows 採用的圖像檔案儲存格式,在 Windows 環境下運行的所有圖像處理軟件都支持转载 2015-05-29 18:21:09 · 1184 阅读 · 0 评论 -
C# 的高效方法取得图片的像素区数据
C# 的高效方法取得图片的像素区数据。// Lock the bitmap's bits. Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);BitmapData bmpData = image.LockBits(rect, ImageLockMode.ReadWrite, image.PixelFor转载 2015-05-29 18:22:45 · 2788 阅读 · 0 评论 -
罗列一些c#的序列化方法
/// /// Serialize object to xml string /// /// T type /// object value /// xml string public static string XMLSerialize(T value) {原创 2016-08-12 16:53:40 · 352 阅读 · 0 评论 -
Linq的SequenceEqual妙用
SequenceEqual是对数组的比较,可以取得连续性的一段进行比较,比较也可以引入compare类定义规则。以下是在一个byte数组中找到另外一个byte数组的全部匹配。 /// /// Search byte array index /// /// source bytes /// search by转载 2016-08-12 17:06:36 · 4285 阅读 · 0 评论 -
C# 判断出文件的编码格式
可以用文件头部的BOM部分判断出文件的编码格式/// <summary>/// Determines a text file's encoding by analyzing its byte order mark (BOM)./// Defaults to ASCII when detection of the text file's endianness fails.//...转载 2019-01-05 16:47:55 · 2960 阅读 · 0 评论 -
c# UnitTest直接关联,无视private, protect等关键字
在AssemblyInfo.cs里面添加InternalsVisibleTo属性[assembly: InternalsVisibleTo("TestProjectName")]原创 2018-09-05 11:56:15 · 566 阅读 · 0 评论 -
C#全部新特性
C#各版本新特性C# 2.0泛型(Generics)泛型是CLR 2.0中引入的最重要的新特性,使得可以在类、方法中对使用的类型进行参数化。例如,这里定义了一个泛型类: class MyCollection<T> { T variable1; private void Add(T param){ } } 使用的时候:MyCollection<string> lis...转载 2018-07-03 11:33:11 · 2107 阅读 · 1 评论 -
C# Automapper使用例
示例类:public class Doctor{ public int Id { get; set; } public string Title { get; set; } public string FirstName { get; set; } public string LastName { get; set; }}public class Healthca转载 2017-09-06 17:36:23 · 1565 阅读 · 0 评论 -
Automapper安装报错
问题描述 在Visual Studio Premium 2012用NuGet 添加依赖AutoMapper失败报错:Operation failed‘AutoMapper’ already has a dependency defined for ‘Microsoft.CSharp’. NuGet Package Manager 版本2.8.60318.667问题解决 这个主要是因为NuGet转载 2017-08-25 16:51:40 · 1006 阅读 · 0 评论 -
AutoMapper运用实例
AutoMapper是可以实现Deep copy的。默认是相同的属性名复制过去。 如果有不一样的属性名需要拷贝,可以通过定义自己的规则就行Mapping。使用实例(转载):public class Employee{ public string Name { get; set; } public string Email { get; set; } public Addr转载 2017-04-01 16:51:32 · 1052 阅读 · 0 评论 -
c# BackgroundWorker的基本用法
C# BackgroundWorker的基本用法转载 2017-03-31 15:06:59 · 455 阅读 · 0 评论 -
c#6.0 新特性
c# 6.0来了,看看强大的新特性自动属性初始化 (Initializers for auto-properties)以前我们是这么写的为一个默认值加一个后台字段是不是很不爽,现在我们可以这样写只读属性的初始化(Getter-only auto-properties)像用户ID这种只读属性,我们以前是这样写的现在我们可转载 2016-11-18 16:41:55 · 608 阅读 · 0 评论 -
c# Expression类的简介
// Add the following directive to your file:// using System.Linq.Expressions; // The block expression allows for executing several expressions sequentually.// When the block expression is execute转载 2016-11-15 07:50:46 · 5663 阅读 · 0 评论 -
推荐一个vs自带工具分析代码的复杂度
VS2012 -> Analyze -> Calculate code metrics feature.代码度量(Code Metrics)是用来测量专业标准的软件特性. 在某些方面,它提供了量化的有用反馈给开发者.查看代码度量值很简单:在项目或解决方案上按右键,选择"Calculate Code Metrics". 以下是一些类似的结果:结果窗口中有五个不同的度量特性:圈转载 2016-10-28 10:42:05 · 17413 阅读 · 3 评论 -
C#调用win32 api字典
推荐一个很不错的查询网站:http://www.pinvoke.net/default.aspx转载 2016-09-05 17:53:38 · 388 阅读 · 0 评论 -
C# WinAPI工具类
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;using System.Runtime.InteropServices; namespace APIHelper{ /// /// Windows API 函转载 2014-12-19 09:22:32 · 2736 阅读 · 0 评论 -
C# SendKeys.SendWait 方法和SendKeys.Send 方法区别
SendKeys.SendWait是要等待按键消息被处理后才返回,相当于同步的效果,类似于Win32 API里的SendMessageSendKeys.Send则将按键消息放到windows消息队列里就返回了,不会等待消息被处理,相当于异步的,类似于Win32 API里的PostMessage转载 2014-11-26 18:01:05 · 11989 阅读 · 0 评论 -
C# BeginInvoke和EndInvoke异步调用
首先做一个Delegate的测试类using System;using System.Threading; namespace Examples.AdvancedProgramming.AsynchronousOperations{ public class AsyncDemo { // The method to be executed转载 2013-12-23 15:34:25 · 899 阅读 · 0 评论 -
ResourceDictionary.Source 属性
ResourceDictionary.Source 属性获取或设置提供合并资源字典源位置的 URI。ResourceDictionary Source="uri"/>通常,Source 指定为引用资源字典的位置的 URI。如果要合并的 ResourceDictionary 的 XAML 文件使用“页面”或“资源”生成操作,则您可指定 XAML 文件的名称转载 2013-11-15 16:40:52 · 2389 阅读 · 0 评论 -
学习WPF绑定
数据绑定是指从一个对象中提取信息,并在应用程序的用户界面中显示所提取的信息,而不用编写枯燥的代码就可以完成所有的工作。通常,富客户端使用双向的数据绑定,这种数据绑定提供了从用户界面向一些对象推出信息的能力—— 同样,不需要或者几乎不需要编写代码。因为许多Windows应用程序都会用到数据(并且所有这些应用程序在某些时候需要处理数据),所以在用户界面技术中数据绑定和WPF一样,也是一个非常重要的概念转载 2013-11-22 09:03:55 · 4070 阅读 · 0 评论 -
C#数值型问题探讨
C#的数值当到达0.00001精度的时候,系统会自动转换为Double型,如果这时候用ToString()方法显示的话,结果会变成1E-5,如果用正则表达式判断的话,就会产生错误。解决这个问题的方法是System.Convert.ToDecimal(value).ToString()转换成Decimal后,系统就不会转换成E的表示方法,最终结果为0.00001。原创 2013-10-16 18:27:46 · 576 阅读 · 0 评论 -
SQL Server 备份与复原
第一种方法用sql script.GetDBConnection();string sql =@"USE [MASTER] BACKUP DATABASE @DB TO DISK = @FILEPATH WITH INIT, DESCRIPTION = @DESCRIPTION";using (var command = new SqlCommand(sql,this.con)原创 2013-09-26 14:45:51 · 672 阅读 · 0 评论 -
C# Bulk Insert方法
普通的Insert发行,在大数据量的情况下,效率非常低下。但是如果用SqlBulkCopy,效率就会大大提高。SqlBulkCopy bulkCopy = null;try{ GetDBConnection(); bulkCopy = new SqlBulkCopy(this.con); bulkCopy.DestinationTableName = "MyTestTabl原创 2013-09-18 16:29:10 · 5049 阅读 · 0 评论 -
C# WPF 前后台Two Way绑定
WPF中从绑定ItemSource有TwoWay的方法,也就是前台变了,后台绑定的对象也会改变。但是后台必须要有使用接口INotifyPropertyChanged。代码如下:using System.ComponentModel;namespace MyWorkSpace.ViewModelBase{public class ViewModelBase: INotifyPropertyChang原创 2013-09-11 10:53:37 · 2044 阅读 · 0 评论 -
WPF TreeView HierarchicalDataTemplate
HierarchicalDataTemplate 的DataType是本层的绑定,而ItemsSource是绑定下层的对象集合,它只能使用两层集合,如MonTemp,如果要用到三层以上,需要两个HierarchicalDataTemplate,用ItemTemplate引用另外一个。HierarchicalDataTemplate绑定后,子节点都是直接绑定DataSource的Object,并原创 2013-09-03 09:19:34 · 4887 阅读 · 0 评论 -
C# 多维数组
1.C#中array[3,4]是那种标准3*4的矩形数组,一整块,里面分成12格,不可以像上面那样分成几个小数组分别操作,要么单个操作,要么整体操作2.C#中锯齿形数组array[][]行数可以先定下来,列数可以不一样,如下面的初始化int[][] array = new int [3][];for (int x = 0; x {array[x] = new int[4];}上转载 2013-09-09 17:13:49 · 921 阅读 · 0 评论 -
C# 生成SQL文追加Where条件的方法
string Sql = @"SELECT * FROM Table WHERE 1=1";可以先加一个Where 1=1的条件然后后面只需要一直追加AND条件,不必判断Where有没有,或者Where只有一个。Sql += @" AND COUNTRY_CD " = '" + CountryID + "'";Sql += @" AND LANGUAGE" = '" + Langu原创 2013-09-09 14:03:44 · 1363 阅读 · 0 评论 -
C# 读取Txt文件内容
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(“文件夹路径”);FileInfo[] ff = di.GetFiles("*.txt");//只取文本文档string ss = "";//存放内容foreach (FileInfo temp in ff){ using (StreamReader sr = temp.OpenTe转载 2013-09-06 10:58:29 · 1495 阅读 · 0 评论