文章分类 - C#
摘要:http://www.docin.com/p-674007016.html
阅读全文
摘要:转自:http://blog.csdn.net/lan_liang/article/details/7206910sharppcap的dll下载地址:http://sourceforge.net/directory/os:windows/?q=sharppcap详细用法:http://www.codeproject.com/KB/IP/sharppcap.aspx为了进一步说明使用方式,在此分享一个我写的wrapper类。[csharp]view plaincopyprint?usingSystem;usingSystem.Collections.Generic;usingSystem.Lin
阅读全文
摘要:void SetPropertyVisibility(object obj, string propertyName, bool visible) { Type type = typeof(BrowsableAttribute); PropertyDescriptorCollection props = TypeDescriptor.GetProperties(obj); AttributeCollection attrs = props[propertyName].Attributes; FieldInfo fld = type.GetField...
阅读全文
摘要:转自:http://www.cnblogs.com/bicker/p/3318934.html最近接触C#的PropertyGrid比较多,得到了两个小心得记录一下。第1点是关于控制PropertyGrid中属性的只读属性的。我遇到的问题是这样的,我需要在运行时根据SVN的状态动态控制PropertyGrid中的属性的读写控制。以前的做法比较简单,直接是PropertyGrid.Enabled(false)。这样的坏处是完全使Grid完全失效,连滚动条也不可用了,不便于查看属性。后来上网查阅相关的资料,网上有比较的是同一篇文章的复制,原文出处我已经找不到了。先把原文贴出来如下:大家知道在类的某
阅读全文
摘要:ColorTranslator.ToOleColorTranslator.FromOle
阅读全文
摘要:转自:http://www.cnblogs.com/supperwu/archive/2013/05/16/3082061.html今日,在项目重构的时候忽然想到一个问题,一个类哪些成员的增加,会影响一个类所占内存的大小?C#有没有办法知道一个对象占多少内存呢? 第一个问题:很快想到是类的非静态的字段、属性。 第二个问题:首先想到的是sizeof()。下面开始验证,首先来验证值类型,验证代码如下:int size = sizeof (int); //4个字节注意点:sizeof运算符仅适用于值类型,而不适用于引用类型。sizeof运算符只能在不安全代码块中使用。如下面的代码将无法编译通过:..
阅读全文
摘要:对付重入问题通常的办法是加锁,但是对于 Timer却不能简单的这样做,你需要评估一下首先Timer处理里本来就不应该做太需要时间的事情,或者花费时间无法估计的事情,比同远方的服务器建立一个网络连接,这样的做法尽量避免如果实在无法避免,那么要评估Timer处理超时是否经常发生,如果是很少出现,那么可以用lock(Object)的方法来防止重入如果这种情况经常出现呢?那就要用另外的方法来防止重入了我们可以设置一个标志,表示一个Timer处理正在执行,下一个Timer发生的时候发现上一个没有执行完就放弃执行static int inTimer = 0;public static vo...
阅读全文
摘要:static class Program { /// /// 应用程序的主入口点。 /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Process instance = RunningInstance(); if ...
阅读全文
摘要:http://www.cnblogs.com/tuyile006/archive/2009/09/28/1575543.html1、 为了增加效率,可以考虑采用无异常的函数在.net2.0中Socket.Send,Socket.Receive 有了无异常的函数 Socket.Send(Byte[], Int32, Int32, SocketFlags, SocketError) Socket.Receive(Byte[], Int32, Int32, SocketFlags, SocketError) 减少不必要的异常,就等于增加效率。2、Socket.Connected 不是当前的Socke
阅读全文
摘要:下面的代码演示的是使用WMI对象可获取取物理内存和可用内存大小,在使用WMI对象前,先要添加对System.Management的引用,然后就可以调用WMI对象,代码如下://获取总物理内存大小 ManagementClass cimobject1 = new ManagementClass("Win32_PhysicalMemory"); ManagementObjectCollection moc1 = cimobject1.GetInstances(); foreach (ManagementObject mo1 in moc1) { capacity += ((Ma
阅读全文
摘要:public static DateTime BytesToDateTime(byte[] bytes, int offset) { if (bytes != null) { long ticks = BitConverter.ToInt64(bytes, offset); if (ticks < DateTime.MaxValue.Ticks && ticks > DateTime.MinValue.Ticks) { ...
阅读全文
摘要:一、c#结构体1、定义与C++对应的C#结构体在c#中的结构体不能定义指针,不能定义字符数组,只能在里面定义字符数组的引用。C++的消息结构体如下://消息格式 4+16+4+4= 28个字节struct cs_message{ u32_t cmd_type; char username[16]; u32_t dstID; u32_t srcID;};C#定义的结构体如下:[StructLayout(LayoutKind.Sequential, Pack = 1)] public struct my_message { public UInt32 cmd_type;...
阅读全文
摘要:最近在用C#做一个项目的时候,Socket发送消息的时候遇到了服务端需要接收C++结构体的二进制数据流,这个时候就需要用C#仿照C++的结构体做出一个结构来,然后将其转换成二进制流进行发送,之后将响应消息的二进制数据流转换成C#结构。代码、仿照C++结构体写出C#的结构来 using System.Runtime.InteropServices; [Serializable] // 指示可序列化 [StructLayout(LayoutKind.Sequential, Pack = 1)] // 按1字节对齐 public struct Operator { ...
阅读全文
摘要:在实际项目开发中,往往碰到需要高性能的同时又希望带给客户舒适体验的情况。于是C#做GUI前台。C++做后台通信就变成一种完美的结合了。举例来说就是C++调用摄像头的API然后将流返回到GUI客户端将摄像头的内容显示在GUI上。 我们都知道C#Socket通信可以采用两种方式一种是传递byte数组,另一种是传递Xml。在C#和C++进行socket通信时我们采取更多的是byte数组的方式。今天主要记录C#中如何将结构体转化为字节数组。当然里面使用了C#不安全的指针方式。下面这段代码的主要功能是根据传入的结构体开辟空间然后生成字节数组返回。Type=>Byte[] public static
阅读全文
摘要:/** * 逆转字节数组 * * @param b * @return */ private static byte[] reverse(byte[] b) { byte[] temp = new byte[b.length]; for (int i = 0; i < b.length; i++) { temp[i] = b[b.length - 1 - i]; } return temp; } /** * 读取无符号位的Short数,16位 ...
阅读全文
摘要:在做C#与其它程序通信的系统时,往往会使用struc操作结构化的数据(如数据包等)。本文简要提出一些使用思路,欢迎各位大牛赐教。一、STRUCT结构设计当数据的结构确定时,总结为下面两种情况:1、数据长度确定(包括字符串):此时可以直接利用struct来构造数据包,比如: [StructLayout(LayoutKind.Sequential, Pack = 1)] struct THeader { public short size; public byte type; public ...
阅读全文
摘要:当于序列化与反序列化,但是不用借助外部文件1、struct转换为byte[]static byte[] StructToBytes(object structObj) { int size = Marshal.SizeOf(structObj); IntPtr buffer = Marshal.AllocHGlobal(size); try { Marshal.StructureToPtr(structObj, buffer, false); byte[] bytes = new byte[size]; Marshal.Copy(...
阅读全文
摘要:using System.Runtime.InteropServices;#region 需要转换的结构 [StructLayout(LayoutKind.Sequential, Pack=1)]//struTest变量在内存中的对齐方式 (指针类型转换成功的必要条件) public struct struTest{ public int intId; public int intName; public DateTime dtBegintime; } #endregion/// <summary> /// xamConverter 的摘要说明。 特定结构变量和byte[]之间的转
阅读全文
摘要:本文要介绍的C#本地读写二进制文件,二进制文件指保存在物理磁盘的一个文件。第一步:读写文件转成流对象。其实就是读写文件流 (FileStream对象,在System.IO命名空间中)。File、FileInfo、FileStream这三个类可以将打开文件,并变成文件 流。下面是引用微软对File、FileInfo、FileStream的介绍System.IO.File类 提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建 FileStream 对象。System.IO.FileInfo类 提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。无法
阅读全文
摘要:在WCF下作大文件的上传,首先想到使用的就是Stream,这也是微软推荐的使用方式。处理流程是:首先把文件加载到内存中,加载完毕后传递数据。这种处理方式对小文件,值得推荐,比如几K,几十k的图片文件,文本文件对大文件就不适用,比如10G的电影,把10G的数据加载到缓存中再传递,这是不可想象的。这个时候我们想到的就是断点续传。由于数据量很大。会导致当前程序阻塞,所以采用异步发送的方式,以进度条显示出来,这也是本篇文章所要实现的功能. 另外,目前BasicHttpBinding, NetTcpBinding, 和NetNamedPipeBinding 支持流处理模型,其他的不支持,这也影响stre
阅读全文