技术探索
  • 创建.NET系统服务程序

    2017-04-26
    403
    C#语言
    1、创建服务项目,会生成一个程序文件如 myService.cs C# -> 经典桌面 -> windows服务2、创建主程序(例如定时服务)protectedoverridevoidOnStart(string[]args){vartimer=newSystem.Timers.Timer();timer.Interval=1000*30;timer.Elapsed+=StartService;timer.Enabled=true;}privatevoidStartService(objectsender,System.Timers.ElapsedEventArgse){using(StreamWriterw=newStreamWriter(newFileStream(@"f:\a.txt",FileMode.Append,FileAccess.Write,FileShare.ReadWrite),Encoding.UTF8)){w.Write(DateTime.Now.ToString()+"\r\n");w.Close();w.D
  • C#中基于DeflateStream的压缩与解压缩实现方法

    2015-04-23
    620
    C#语言
    利用本文的方法,可以对任意对象进行压缩与解压缩。usingSystem.IO;usingSystem.IO.Compression;///<summary>///将数据压缩,并输出为Base64String格式。///</summary>///<paramname="data">原始数据。</param>privatestringCompress(byte[]data){using(MemoryStreamms=newMemoryStream(data)){ms.Position=0;using(MemoryStreamms2=newMemoryStream()){using(DeflateStreamdf=newDeflateStream(ms2,CompressionMode.Compress)){byte[]buff
  • C#中解压缩并反序列化二进制数据

    2013-09-23
    1247
    C#语言
    在《使用C#将指定对象压缩并序列化为二进制》一文中介绍了如何将对象压缩并序列化为二进制,本文介绍相反的过程,即解压缩并反序列化(还原为对象)。///<summary>///将二进制反序列化为指定的类型。///</summary>///<typeparamname="T">反序列化的目标类型。</typeparam>///<paramname="bytes">要反序列化的二进制数据。</param>///<paramname="isdecompress">是否解压缩。</param>publicTDeserializeFromBytes<T>(byte[]bytes,boolisdecompress=true){using(S
  • 使用C#将指定对象压缩并序列化为二进制

    2013-09-23
    1902
    C#语言
    本文介绍如何将一个对象(任何类型)压缩,并序列化为二进制。通过该种方式处理后,可以大幅减小数据占用空间。如果再将该二进制数转化为Base64String,就可以保存到磁盘,从而节省空间。///<summary>///将指定对象序列化为二进制。///</summary>///<paramname="obj">要序列化的对象。</param>///<paramname="iscompress">是否压缩。</param>publicbyte[]SerializeToBytes(objectobj,booliscompress=true){if("DataTable"==obj.GetType().Name)((System.Data.DataTable)obj).
  • 在C#中如何读取枚举值的描述属性

    2013-07-30
    2494
    C#语言
    在C#中,有时候我们需要读取枚举值的描述属性,也就是说这个枚举值代表了什么意思。比如本文中枚举值 Chinese ,我们希望知道它代表意思的说明(即“中文”)。有下面的枚举:publicenumEnumLanugage{[System.ComponentModel.Description("中文")]Chinese,English}我们要获取的就是 Chinese 中的说明文字“中文”。publicstringGetEnumDescription(EnumenumValue){stringstr=enumValue.ToString();System.Reflection.FieldInfofield=enumValue.GetType().GetField(str);object[]objs=field.GetCustomAttributes(typeof(Syste
  • 对WebBrowser控件设置独立的代理服务器

    2013-06-19
    1820
    C#语言
    我们用WebBrowser控件的时候,有时需要对它使用代理服务器。一种常规的做法是修改全局IE代理设置。这种方式可以通过修改注册表实现,但这样做就把所有的IE引擎都给设置了,网上介绍的大都是这种方法,并且往往并不是我所想要的效果,这里就不介绍了。另外一种方式是通过函数InternetSetOption实现修改当前程序中的WebBrowser设置,使用方式如下:static class WebBrowserProxy{struct Struct_INTERNET_PROXY_INFO{public int dwAccessType;public IntPtr proxy;public IntPtr proxyBypass;};[DllImport("wininet.dll", SetLastError = true)]static extern bool Internet
  • 如何将一个字符串拆分成数组?

    2013-06-14
    1519
    C#语言
    本文介绍的方法是 .net 中Split方法的补充,使用起来更加方便。////// 按指定的字符将字符串分隔为字符串数组。////// 要分隔的字符串。/// 分隔符号。public static string[] Split(string value, string separator){if (value.IndexOf(separator) == -1) return new string[] { value };return Regex.Split(value, Regex.Escape(separator), RegexOptions.IgnoreCase);}
  • C#中将指定的阳历日期转化为阴历

    2013-06-08
    1013
    C#语言
    本文提供一种简单的方法,可以将阳历日期转换为阴历,并用中文格式输出。System.Globalization中的ChineseLunisolarCalendar可以得到阴历的年、月、日,但由于涉及到润月的问题,所以需要先处理后才能输出。不知道微软为什么不直接提供一个将阳历转为阴历的方法呢?using System.Globalization;////// 根据阳历获取指定的阴历。////// 阳历日期。public string ChineseDateTime(DateTime date){ChineseLunisolarCalendar ch = new ChineseLunisolarCalendar();int year = ch.GetYear(date);int month = ch.GetMonth(date);int leapmonth = 0;if (date.Month