随笔分类 -  C#

1 2 下一页
与C#语法有关
[转]进程和线程的区别
摘要:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。进程是具有一定独立功能的程序关于某个 阅读全文
posted @ 2013-08-14 17:09 SamWang 阅读(1825) 评论(0) 推荐(2) 编辑
[整理]C#反射(Reflection)详解
摘要:本人理解:装配件:Assembly(程序集)晚绑定:后期绑定MSDN:反射(C# 编程指南)-----------------原文如下--------1、 什么是反射2、 命名空间与装配件的关系3、 运行期得到类型信息有什么用4、 如何使用反射获取类型5、 如何根据类型来动态创建对象6、 如何获取方法以及动态调用方法7、 动态创建委托1、什么是反射 Reflection,中文翻译为反射。 这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成,而反射提供一种编程的方式,让程序员可以在... 阅读全文
posted @ 2013-08-14 10:41 SamWang 阅读(160932) 评论(8) 推荐(38) 编辑
[转]C#调用SSIS包(DTS)
摘要:首先,有两种调用方式:直接用(需要引用Microsoft.SqlServer.DTSRuntimeWrap.dll),通过Web Service进行执行SSIS包.如果是直接调用那么需要引用Microsoft.SqlServer.DTSRuntimeWrap.dll,客户端需要安装MS SQL 2005的客户端组件,调用的代码如下:using System;using System.Data;using System.Collections.Generic;using System.Text;using System.Data.Common;using System.Configuration 阅读全文
posted @ 2013-04-28 10:46 SamWang 阅读(1087) 评论(0) 推荐(1) 编辑
[转]c#实现用SQL池(多线程),定时批量执行SQL语句
摘要:在实际项目开发中,业务逻辑层的处理速度往往很快,特别是在开发Socket通信服务的时候,网络传输很快,但是一旦加上数据库操作,性能一落千丈,数据库操作的效率往往成为一个系统整体性能的瓶颈。面对这问题,我们怎么办呢?好,下面我就为大家介绍一种方法:构建SQL池,分离业务逻辑层和数据访问层,让业务逻辑层从低效的数据库操作解脱,以提高系统整体性能。(一)SQL池 SQL池是SQL容器,用于存放业务逻辑层抛过来的SQL语句。SQL池主要提供以下几种方法:1)internal string Pop(),从池中取出SQL。2)internal void Push(string item),增加一个SQL. 阅读全文
posted @ 2013-02-19 01:12 SamWang 阅读(981) 评论(1) 推荐(3) 编辑
[转]基于C#的Socket简单通讯
摘要:首先从原理上解释一下采用Socket接口的网络通讯,这里以最常用的C/S模式作为范例,首先,服务端有一个进程(或多个进程)在指定的端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以按设计的数据交换方法和格式进行数据传输。客户端在需要的时刻发出向服务端的连接请求。这里为了便于理解,提到了一些调用及其大致的功能。使用socket调用后,仅产生了一个可以使用的socket描述符,这时还不能进行通信,还要使用其他的调用,以使得socket所指的结构中使用的信息被填写完。在使用TCP协议时,一般服务端进程先使用socket调用得到一个描述符,然后使用bind调用将一个名字与socke 阅读全文
posted @ 2013-02-19 00:39 SamWang 阅读(1580) 评论(0) 推荐(1) 编辑
[转]深入探析c# Socket
摘要:最近浏览了几篇有关Socket发送消息的文章,发现大家对Socket Send方法理解有所偏差,现将自己在开发过程中对Socket的领悟写出来,以供大家参考。 (一)架构 基于TCP协议的Socket通信,架构类似于B/S架构,一个Socket通信服务器,多个Socket通信客户端。Socket通信服务器启动时,会建立一个侦听Socket,侦听Socket将侦听到的Socket连接传给接受Socket,然后由接受Socket完成接受、发送消息,当Socket存在异常时,断开连接。在实际开发项目中,往往要求Socket通信服务器能提供高效、稳定的服务,一般会用到以下技术:双工通信、完成端口、.. 阅读全文
posted @ 2013-02-19 00:02 SamWang 阅读(2598) 评论(1) 推荐(1) 编辑
[转]C#堆和栈的区别
摘要:理解堆与栈对于理解.NET中的内存管理、垃圾回收、错误和异常、调试与日志有很大的帮助。垃圾回收的机制使程序员从复杂的内存管理中解脱出来,虽然绝大多数的C#程序并不需要程序员手动管理内存,但这并不代表程序员就无需了解分配的对象是如何被回收的,在一些特殊的场合仍需要程序员手动进行内存管理。在32位的处理器上,每个进程的虚拟内存为4GB,.NET会在这4GB的内存块中开辟出3块内存,分别作为栈、托管堆、和非托管堆堆(heap):堆是从下往上分配,所以已用的空间在自由空间下面,C#中所有引用类型的对象分配在托管堆上,托管堆在内存上是连续分配的,并且内存对象的释放受垃圾收集机制的管理,效率相对于栈来说要 阅读全文
posted @ 2013-02-18 21:59 SamWang 阅读(2415) 评论(1) 推荐(4) 编辑
[转]抽象类和接口的区别
摘要:.Net提供了接口,这个不同于Class或者Struct的类型定义。接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类。其实不然,接口和抽象类各有长处和缺陷,因此往往在应用当中,两者要结合来使用,从而互补长短。 接下来先说说抽象类和接口的区别。 区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。这些听起来有些虚,举个例子。例如,狗是对于所有狗类动物的统称,京哈是狗,牧羊犬是狗,那么狗的一般特性.. 阅读全文
posted @ 2013-02-18 21:48 SamWang 阅读(616) 评论(0) 推荐(1) 编辑
[转]C#获取本机IP搜集整理7种方法
摘要:① 1 private void GetIP() 2 { 3 string hostName = Dns.GetHostName();//本机名 4 //System.Net.IPAddress[] addressList = Dns.GetHostByName(hostName).AddressList;//会警告GetHostByName()已过期,我运行时且只返回了一个IPv4的地址 5 System.Net.IPAddress[] addressList = Dns.GetHostAddresses(hostName);//会返回所有地址,包... 阅读全文
posted @ 2012-11-16 14:32 SamWang 阅读(50256) 评论(2) 推荐(5) 编辑
【改进】C# WinForm捕获全局异常 SamWang
摘要:许多小公司的项目都缺少异常处理模块,我们也是。经常会出现这种情况,用户在UI界面操作,就直接跳出堆栈调用的异常信息对话框,老板看到那叫一个火啊!你们的代码怎么天天出现乱码。呵呵!这就是没有异常捕获处理导致的,现在许多人写代码都没意识处理异常,只要实现功能就好,我的许多组员也是如此。 项目刚接手,所以打算做一个异常全局捕获,统一处理的模式,采用具体详细信息的对话框提醒与日志文件保存方式。以下是根据网上找的C#winform全局异常捕获做了点修改。(等项目异常处理全部完成后,将心得体会做个记录,此处暂对全局异常捕获做个记录) 1 static class Program 2 ... 阅读全文
posted @ 2012-11-14 11:29 SamWang 阅读(25129) 评论(12) 推荐(7) 编辑
[转]C#webservice的简单示例
摘要:是webservice.就概念上来说,可能比较复杂,不过我们可以有个宏观的了解:webservice就是个对外的接口,里面有函数可供外部客户调用(注意:里面同样有客户不可调用的函数)。假若我们是服务端,我们写好了个webservice,然后把它给了客户(同时我们给了他们调用规则),客户就可以在从服务端获取信息时处于一个相对透明的状态。即使客户不了解(也不需要)其过程,他们只获取数据。 webservice传递的数据只能是序列化的数据,典型的就是xml数据。下面以一个简单例子为例:(一)新建——-项目---Visual C#---web---ASP.NET Web 服务应用程序,命名为Test. 阅读全文
posted @ 2012-10-22 09:32 SamWang 阅读(1404) 评论(0) 推荐(0) 编辑
[转]C#数字千分位问题
摘要:1、C#中用最简单的方法把数字(不含小数)转换为千分位格式: 如1234567变成1,234,567 方法:1234567.ToString("###,###") 或 1234567.ToString("N0") 2、C#中把数字转换成带两位小数的千分位字符: 如1234567.891变成1,234,567.89 方法:String.Format("{0:N}",1234567.891); //默认为两位小数,如果没有小数位,则小数位补两个0 或:String.Format("{0:N2}",1234567.891 阅读全文
posted @ 2012-08-02 13:58 SamWang 阅读(6420) 评论(0) 推荐(1) 编辑
[转]C# 释放非托管资源(Finalize &&Dispose)
摘要:在了解Finalize和Dispose之前,我们需要了解两个概念,一个是托管资源,一个非委托资源。a.其中托管资源一般是指被CLR控制的内存资源,这些资源的管理可以由CLR来控制,例如程序中分配的对象,作用域内的变量等。b.而非托管资源是CLR不能控制或者管理的部分,这些资源有很多,比如文件流,数据库的连接,系统的窗口句柄,打印机资源等等……这些资源一般情况下不存在于Heap(内存中用于存储对象实例的地方)中。 .Net平台中,CLR为程序员提供了一种很好的内存管理机制,使得程序员在编写代码时不需要显式的去释放自己使用的内存资源(这些在先前C和C++中是需要程序员自己去显式的释放的)。这种管理 阅读全文
posted @ 2012-08-02 10:25 SamWang 阅读(1387) 评论(0) 推荐(0) 编辑
【整理】C# ToString格式字符串整理(Format)(数字、日期和枚举的标准格式设置说明符)(SamWang)
摘要:日常开发中,格式字符串的情况非常多。经常也会忘记,经常去查有些麻烦,所以今天就花点时间做个整理。 格式字符串用的比较多的有数字、日期与枚举的格式化。 一、数字格式字符串 C或c本地货币格式D或d 十进制格式,把整数转换为以10为基数的书,如果给定一个精度说明符,就加上前导0E或e 科学计数法(指数)格式,精度说明符设置小数位数(默认为6),格式字符串的大小写(e或E)确定指数符号的大小写。F或f 固定点格式,精度说明符设置小数位数,可以为0G或g普通格式,使用E或F格式取决于哪种格式较简单N或n 数字格式,用逗号表示千分符,例如32,767.44P或p 百分数格式X或x十六进... 阅读全文
posted @ 2012-06-29 14:30 SamWang 阅读(8467) 评论(3) 推荐(6) 编辑
[转]C# 多个项目共享配置文件(共用一个SQL连接字符串)
摘要:在我们的蓝山公司人事管理系统的项目中,员工管理EmployeeManagement和安全管理Security等项目都要用到数据库连接,考虑到可以将数据库连接字符串存储到应用程序配置文件app.config。但默认的应用程序配置文件只能在自己的项目中读取,如何实现多个项目共享一个app.config文件,这样,当数据库连接发生改变时,只需要修改应用程序配置文件app.config,而不需要重新编译程序。一、建立应用程序配置文件app.config首先,打蓝山公司人事管理解决方案,在主项目BlueHillWindows中添加应用程序配置文件app.config,其内容如下:<?xmlvers 阅读全文
posted @ 2012-06-18 11:17 SamWang 阅读(6226) 评论(0) 推荐(0) 编辑
【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
摘要:今天无意中看到有关Invoke和BeginInvoke的一些资料,不太清楚它们之间的区别。所以花了点时间研究了下。 据msdn中介绍,它们最大的区别就是BeginInvoke属于异步执行的。Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托。Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。msdn说明:控件上的大多数方法只能从创建控件的线程调用。 如果已经创建控件的句柄,则除了 InvokeRequired 属性以外,控件上还有四个可以从任何线程上安全调用的方法... 阅读全文
posted @ 2012-05-25 09:28 SamWang 阅读(27151) 评论(11) 推荐(15) 编辑
[转]c#各种运算符
摘要:c#主要支持下面所示的运算符:算术运算符 + - * / %逻辑运算符 & | ^ ~ && || !字符串连接运算符 +增量和减量运算符 ++ --移位运算符 << >>比较运算符 == != < > <= >=赋值运算符 = += -= *= /= %= |= ^= <<= >>=成... 阅读全文
posted @ 2012-05-22 10:07 SamWang 阅读(7517) 评论(1) 推荐(1) 编辑
[转]C#基元类型、引用类型和值类型以及装箱拆箱
摘要:基元类型(primitive type) ----------------------------------编译器直接支持的类型。 sbyte / byte / short / ushort / int / uint / long / ulongchar / float / double / bool / decimal /object / string 值类型(value type) ------------------------------ 值类型实例分配在堆栈(stack)上,值类型变量本身即包含实例所有字段,值类型不受垃圾回收器控制,在离开作用域后自动释放所占内存。所有值类型都继承 阅读全文
posted @ 2012-05-21 14:26 SamWang 阅读(1548) 评论(0) 推荐(0) 编辑
[转]数据结构(C#版)概念整理
摘要:第一章1、数据(Data)数据是外部世界信息的载体,它能够被计算机识别、存储和加工处理,是计算机程序加工的原料。计算机程序处理各种各样的数据,可以是数值数据,如整数、实数或复数;也可以是非数值数据,如字符、文字、图形、图像、声音等。2、数据元素(Data Element)和数据项(Data Item)数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑和处理。数据元素有时也被称为元素、结点、顶点、记录等。一个数据元素可由若干个数据项(Data Item)组成。数据项是不可分割的、含有独立意义的最小数据单位,数据项有时也称为字段(Field)或域(Domain)。数据项分为两种,一 阅读全文
posted @ 2012-05-17 12:40 SamWang 阅读(1151) 评论(0) 推荐(0) 编辑
[转]C# const和static readonly区别
摘要:我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。明白了这个本质区别,我们就不难看出下面的语句中static readonly和const能否互换了:1. static readonly MyClass myins = new MyClass();2. static readonly MyClass myins = null;3. 阅读全文
posted @ 2012-05-16 13:34 SamWang 阅读(11225) 评论(6) 推荐(10) 编辑

1 2 下一页