随笔分类 - dotNet
摘要:原文:http://www.cnblogs.com/luminji/archive/2011/03/29/1997812.html需要明确一下C#程序(或者说.NET)中的资源。简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类:托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象;非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象等;毫无例外地,如果我们的类型使用到了非托管资源,或者需要显式释放的托管资源,那么,就需要让类型继承接口IDisposable。这相当于是告诉调用者,该类型是需要显式释放资源的,你需要调用我的
阅读全文
摘要:原文:http://blog.csdn.net/hardstone1/article/details/5380775网上代码和MSDN帮助中都没有列出ManagementObject[" "]这里到底有哪些属性可以使用,参考了http://www.groupsrv.com/dotnet/about69957.html了之后发现了可以枚举出来所有属性,代码如函数getallprop()。函数useprop中描述了如何获取以激活的网卡的IP地址和它的驱动程序名称,如果大伙需要其他的网卡其他属性,就到getallprop()的结果中去找了,全英文的属性,没有对应的中文介绍,太多了
阅读全文
摘要:public class getIP { [DllImport("Iphlpapi.dll")] //操作系统自带 private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); [DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip); //获取本机的IP public string getLocalIP() { string strHostN
阅读全文
摘要:原文:本文出自 “周公(周金桥)的专栏” 博客,请务必保留此出处http://zhoufoxcn.blog.51cto.com/792419/517093我们知道在.NET中我们有多种对象序列化的方式,如XML方式序列化、Binary序列化,其中XML序列化是一种比较通用的在各语言之间传递数据的方式。除了这两种序列化方式之外,在.NET中还可以使用JSON序列化。JSON(JavaScript Object Notation)是一种轻量级轻量级的数据交换格式,并且它独立于编程语言,与XML序列化相比,JSON序列化后产生的数据一般要比XML序列化后数据体积小,所以在Facebook等知名网站中
阅读全文
摘要:不知是谁设计出来的,不知设计目的是什么,完全一无是处,也节约不了多少空间。最二的是还是默认的框架,浪费了不知多少人的宝贵时间。
阅读全文
摘要:原文:http://msdn.microsoft.com/zh-cn/library/8xx3tyca.aspx 连接到数据库服务器通常由几个需要很长时间的步骤组成。 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前事务中登记,等等。 实际上,大多数应用程序仅使用一个或几个不同的连接配置。 这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。 为了使打开连接花费的系统开销最小,ADO.NET 使用称为 connection pooling 的优化方法。 连接池使新连接必须...
阅读全文
摘要:方法1:直接递归,调用button1_Click函数,当N为41时耗时10644ms,递归调用次数count = 535828591(5亿),已经没有信心再增加N的值了。效率低的原因是每次求N的结果时都会重新计算N-1和N-2的结果,导致大量的重复计算,由count的值可知。方法2:用一字典保存每次计算后的第N项的值,下次需要时直接取,不需重复计算。当N=41时耗时1ms以下,递归次数81,即便N=150时耗时也在1ms以下。结论:在递归算法时,考虑暂存结果减少递归调用次数能极大提高运算效率。以下是主要代码:private Dictionary<long, long> dict =
阅读全文
摘要:目前网上流行的所谓"取真实IP地址"的方法,都有bug,没有考虑到多层透明代理的情况。 多数代码类似:string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] !=String.Empty) ?HttpContext.Current.Request.S
阅读全文
摘要:应无聊大王要求,写一份16进制乘法口诀表:2*2=4 2*3=6 3*3=9 2*4=8 3*4=C 4*4=10 2*5=A 3*5=F 4*5=14 5*5=19 2*6=C 3*6=12 4*6=18 5*6=1E 6*6=24 2*7=E 3*7=15 4*7=1C 5*7=23 6*7=2A 7*7=31 2*8=10 3*8=18 4*8=20 5*8=28 6*8=30 7*8=38 8*8=40 2*9=12 3*9=1B 4*9=24 5*9=2D 6*9=36 7*9=3F 8*9=48 9*9=51 ...
阅读全文
摘要:wcf对象的Close()可能会异常,故using不太适用,可以自定义一个通过的函数关闭wcf对象://System.ServiceModel.ICommunicationObject是WCF对象的基类。 public static void 关闭WCF对象(System.ServiceModel.ICommunicationObject obj) { try { obj.Close(); } catch { try { obj.Abort(); } catch { } } }
阅读全文
摘要:两个开源组件:http://sharpsnmplib.codeplex.com/http://sourceforge.net/projects/snmpsharpnet/相关文章:http://www.cnblogs.com/wuhuacong/archive/2011/01/10/1931975.htmlhttp://www.cnblogs.com/luluping/archive/2010/04/16/1713504.htmlhttp://www.cnblogs.com/s5279551/archive/2010/09/19/1831261.html
阅读全文
摘要:在一个程序中我一直用这种方式控制单实例运行:bool createNew = true;using (Mutex m = new Mutex(false, "X8127891C-CD52-4448-B0FF-AB5E5AA34F15", out createNew)){ if (createNew == false) { MessageBox.Show("此程序正在运行,并不允许同时运行多个实例", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } 。。。。。程序
阅读全文
摘要:1.调用COM组件:Type type = Type.GetTypeFromProgID("VisualPHD.Data"); dynamic phd = Activator.CreateInstance(type);phd.HostName = "192.168.53.186";2. 反射调用dotNet类Type type = Type.GetType("ConsoleApplication1.Test"); dynamic t = Activator.CreateInstance(type); t.Print("你好!
阅读全文
摘要:原文:http://www.cnblogs.com/NalrA/archive/2009/06/15/1503568.html1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName 获取模块的完整路径。2. System.Environment.CurrentDirectory 获取和设置当前目录(该进程从中启动的目录)的完全限定目录。3. System.IO.Directory.GetCurrentDirectory() 获取应用程序的当前工作目录。这个不一定是程序从中启动的目录啊,有可能程序放在C:\ww.
阅读全文
摘要:留下记号,最近要用到: 方案1、使用WM_COPYDATA消息方案2、使用WriteProcessMemory(),ReadProcessMemory()访问其他进程的内存方案3、使用内存镜像文件 http://topic.csdn.net/u/20080123/09/12664978-2019-4ac9-93fe-86e8c0278d5b.html 内存镜像方式:( CreateFileMapping(...),OpenFileMapping(...),MapViewOfFile(..) ) http://blog.csdn.net/rzjkl1980/article/details...
阅读全文
摘要:比较:public static extern int comp2(byte[] a, byte[] b, int count); [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl, SetLastError = false)] static extern int memcmp(byte[] b1, byte[] b2, UIntPtr count); [DllImport("msvcrt.dll", CallingConvention = CallingConven
阅读全文
摘要:以前一直用[DllImport("xx.dll")]声明,但在.net4中却出现了错误。在网上找到解决方法,在此做个备份:改声明: [DllImport("xx.dll", CallingConvention = CallingConvention.Cdecl)]
阅读全文
摘要:调用指令:HttpRuntime.UnloadAppDomain();调用以上指令后程序执行Application_End函数程序结束, 当有新的连接时调用Application_Start程序重新开始。通过此指令可以实现asp.net重启。
阅读全文
摘要:昨天一个WindowForm项目需要画图,随手拖了一个PictureBox控件上来,实现了On_paint事件后,图画的倒是不错,但总是不能很好的重画,总感觉是重画完成后又被刷新了,试了N次都不行。 实在搞不定就换了个Panel控件来画,没想到确非常完美。问题解决了,我也不想去深究到底是什么原因,在此留个纪念! 在此给别人也提个醒。
阅读全文
摘要:1. javaScript函数中执行C#代码中的函数: 方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2、在前台写一个js函数,内容为document.getElementById("btn1").click(); 3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数; 方法 二:1、函数声明为public 后台代码(把public改成...
阅读全文