技巧积累

  1. 导出数据到excel表格,数字格式的字符串会被自动转换为科学计数,方法是在字符串前面加上“‘”,可解决问题。更新中。
  2. 文件下载:WEB中下载文件时应使用返回文件流的方式,不要直接使用文件的链接!这样做的好处有:1.特殊字符不会引起程序异常;2.下载文件可以在服务器端进行控制、监控;下载文件的通用方法见图
  3. C# 中科学计数的问题

     比较的数据会自动转换为科学技术,输出时也会是科学技术。可用ToString("format"),进行控制。

    如double   d   =   3490825.45634; 
    string   s   =   d.ToString( "f2 ");

  4. Process.Start(文件),可显示文件。
  5. 显示星期几:
    Datetime date=DateTime.Now;
    date.ToString("dddd",new Culture("zh-cn"));
    dddd 周中某天的完整名称
  6. GC.Collect()主动的垃圾回收
  7. Thread.CurrentThread.CurrentUICulture获取程序的当前区域性(本地化相关).
  8. 本地化语言问题:Resource1.resx文件,可以定义字符串资源.

    .net解析资源的步骤.net 资源文件名(这里是Resource1.resx)由根名称(即Resource1),本地语言名称(默认情况下还没有)及扩展名组成,在读取资源时,资源管理器会根据当前环境决定需要的本地语言名称,例如英语,然后试图以全名读取资源,美国英语的本地名称为en-US(语言名称可以从MSDN中查询CultureInfo信息得到),那么资源全名为Resource1.en-US.resx,如果存在该文件,则载入该文件作为资源文件,如果没有则使用默认值Resource1.resx,确定好资源文件后开始查找指定的资源(例如String1),如果在本地资源文件中没有找到,则向上查找上一级的本地资源文件,最终找到根名称Resource1为止.

  9. http://www.cnblogs.com/xumingxiang/archive/2012/04/14/override_new.html 重写和覆盖(new关键字)
  10. Dns类提供简单的域名解析功能
    1 string hostName = Dns.GetHostName();
    2             IPAddress[] ipAddressList = Dns.GetHostEntry(hostName).AddressList;

     

  11. [MethodImpl(MethodImplOptions.Synchronized)]标示只能有一个线程执行该方法
  12. WeakReference若引用,即使被引用,也可以被GC回收.WeakReference声明的引用Target属性可以获取真是引用类型.
  13. Activator包含特定的方法,用以在本地或从远程创建对象类型,或获取对现有远程对象的引用。此类不能被继承。Activator.CreateInstance(Type),可创建type类型的实例
  14. Interlocked.Increment() 实现数的原子性加减(多线程)
  15. 熟悉Windows Form编程的读者应该都知道,WinForm空间的基类Control(System.Windows.Forms.Control)都实现了System.ComponentModel.ISynchronizeInvoke接口,而Control对ISynchronizeInvoke的实现就是为了解决Control的操作必须在创建Control线程的问题,ISynchronizeInvoke定义Invoke和BeginInvoke方法方面我们以同步或者异步的方式操作Control
  16. 循环开辟新线程传参数问题:后两种方法都可以.
            foreach (var item in channelList) {
                        //存在参数问题
                        //ThreadPool.QueueUserWorkItem(delegate {
                        //    item.DoSomething();
                        //    Console.WriteLine(DateTime.Now);
                        //});
    
                        ThreadPool.QueueUserWorkItem((s) => {
                            (s as IContract).DoSomething();
                            Console.WriteLine(DateTime.Now);
                        }, item);
                    }
    
                    Array.ForEach(channelList.ToArray<IContract>(), delegate(IContract channel) {
                        ThreadPool.QueueUserWorkItem(delegate {
                            channel.DoSomething();
                            Console.WriteLine(DateTime.Now);
                        });

     

  17. OledbSql操作Access数据库的一点发现,不确定是不是绝对的.
    1.   以日期为例,存储日期为null值时,不能直接给CommandParamater赋null值,要用system.DbNull.Value.
    2. 读取为null的值时,强制转换为可控类型也是有问题的.要先判断是否为null.用IsNull判断下,再进行下一步的处理.
  18. 获取Windows 管理规范中的操作类,可以获取和设置系统的硬件信息.如ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");参考:http://www.cnblogs.com/liushuijinger/archive/2013/02/19/2916663.html
  19. C# Release模式下生成单元测试会出现错误,要调到Debug模式才可以.
  20. SystemInformation.WorkingArea获取屏幕的工作区域的大小(以像素为单位)。SystemInformation 提供当前系统环境的有关信息。
  21. http://www.cnblogs.com/AaronYang/archive/2013/06/03/3113543.html  NPOI
  22. WindowsIdentity.GetCurrent(),当前window用户
    			WindowsIdentity id = WindowsIdentity.GetCurrent();
    			WindowsPrincipal principal = new WindowsPrincipal(id);
    			return principal.IsInRole(WindowsBuiltInRole.Administrator);
    

      判断程序是否是以管理员身份运行。

  23. C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis 重新安装IIS以后,需要用aspnet_regiis.exe来注册.NET Framework
  24. WebClient HttpWebRequest HttpClient WebBrowser请求Web数据的方式
  25.  ICSharpCode.SharpZipLib.Zip.ZipException: Entry size/stream size mismatch 异常,可能是要压缩的文件名字中包含空格
posted @ 2012-08-08 09:16  平常心队长  阅读(401)  评论(0)    收藏  举报