by shinichi_wtn
2012-12-28 14:20
异步编程简介
异步操作通常用于执行完成时间可能较长的任务,如打开大文件、连接远程计算机或查询数据库。异步操作在主应用程序线程以外的线程中执行,所以当应用程序调用方法异步执行某个操作时,应用程序可在异步方法执行其任务时继续执行。
我们在写界面时会大量涉及异步操作,一般用时可能操作20ms的操作都应该设计为异步,以保证最佳的用户体验。
C#中实现异步的传统方法
其实并不需要了解C#的多线程编程,就可以很好的编写异步应用,.NET Framework中很多方法已经封装为异步(尤其是Silverlight SDK与Windows Phone SDK),方法里如果有Beg...
[More]
by shinichi_wtn
2010-10-25 20:38
在《C#动态程序集的加载、创建实例、序列化与反序列化》中讲到了,.NET程序在运行时默认只加载与主程序在同一目录的程序集,而如果我们把一些dll放到了其他我们自定义的内层文件夹中,就无法探测到。之前的文章是为了动态反序列化而通过AppDomain里的AssemblyResolve事件来手动加载需要的程序集,但更常见的应用是我们希望定义多个子目录来把相关类库进行更好的区分,而在程序运行时又能自动加载这些目录里的程序集,这就需要用到C#配置文件中的私有文件夹配置方法。
我们可以在项目中创建app.config文件来配置私有程序集,比如我们把软件的模块都放在了一个子目录Modules里面,要使CL...
[More]
by shinichi_wtn
2010-09-12 11:57
Dynamic Assembly: Load, CreateInstance, Serialize and Deserialize
什么是动态程序集
动态程序集是指没有被编译至主程序,而是主程序在运行时动态调用或者生成的程序集。动态链接库(dll)大家一定很熟悉,它是一系列类和方法的打包,可以被不同的执行程序加载和共享,而C#生成的程序集也是dll。在实际应用中,一些程序不一定要在启动的时候就把所有dll文件都加载到内存中,而是根据需要动态加载或者创建。C#的反射和晚期绑定为实现这种操作提供了极大的帮助。本文主要介绍了从动态程序集里怎样创建特定类的对象,以及该对象的序列化和反序列化问题。
...
[More]
by shinichi_wtn
2010-08-23 17:11
正则表达式简介
在许多应用场景中,我们需要在字符串中查找特定的信息,或者编辑其中的部分信息。比如网页信息采集程序需要对HTML文本进行筛选和处理,获得锚点(<a>),列表(<li>)等等,如果没有正则表达式,我们需要编写繁琐的字符串处理程序来挖掘所需的文本;同样,要在一段程序代码中对关键词进行着色(代码着色问题),我们首先在字符串中找到关键词,然后把关键词替换为相应的HTML代码(如将class替换为<span style=”color:blue”>class</span>),如果没有正则表达式,这项工作将变得十分繁琐。...
[More]
by shinichi_wtn
2010-01-14 16:24
参考了网上部分资料,自己改写了一个方便的获取经纬度信息的类Geo,其中Latitude和Longtitude分别是纬度和经度。其中最重要的构造函数就是传入地名,通过Webrequest从Google Map获得经纬度值,在含有地理位置信息的项目里可以很方便的调用,即Geo g = new Geo("北京师范大学");然后g.Latitude和g.Longtitude就是北京师范大学的纬度和经度了,它们分别是39.9614580,116.3692820。Geo的实现如下:
using System;
using System.Collections.Generic;
using Syste...
[More]
by shinichi_wtn
2009-12-29 15:34
手机上网越来越普及,手机种类越来越多,要开发一个供手机访问网站并兼容所有不同类型的手机和浏览器是很不容易的,北京师范大学自习室查询平台的手机版最初是直接用ASP.NET实现的,只是用CSS定义成了适合手机屏幕的页面,虽然同学们访问基本没有问题,但是也偶尔会有“不能选择下拉菜单”、“按钮button不能点击”这样的问题,后来想了想,并不是每个手机都能很好的支持HTML和CSS,UCWEB则是经过其第三方代理处理了HTML流,以压缩页面带来流量节省。
于是我决定用纯WAP的方式实现自习室查询平台,因为老手机即使不支持WAP2.0,但是一定是支持WA...
[More]
by shinichi_wtn
2009-02-04 22:20
首先,确保引用如下两个类库
using System.Data;
using System.Data.SqlClient;
连接本机SQL服务器
string strConnection = "Trusted_Connection=SSPI;";
strConnection += "Database=数据库名称;Server=(local)\\SQLEXPRESS;";
//如果数据库设置了实例名,则需要填写相应实例名
strConnection += "Connect Timeout=30";
SqlConnection objConnection = new SqlConn...
[More]
by shinichi_wtn
2008-11-21 18:52
前不久从维基百科上下了一个中文维基百科的主要数据包,解压后发现竟然有900M,如此大的XML文件除非内存超大,否则根本无法打开。为此,我想到了把它分割为一些较小的XML文件,并且在文件中保留原有的XML结构。
首先,要分析XML的结构,然后用C#专门针对处理XML的高效工具XmlTextReader对文件进行分割,用XmlTextWriter写入新的小文件中,最后,编程即可。
using System;
using System.Xml;
using System.IO;
using System.Text;
namespace data
{
class Progr...
[More]