标签归档:C#

C#下的异步编程及其同步机制

 前几天公司内部有人搞了一个关于多线程及其同步问题的讲座,内容很丰富,覆盖面很广,让人听了大呼过瘾。他采取了横向铺陈的方法讲的,罗列了C#下异步编程方法和模式及各种同步机制,这种讲述方式对于熟悉这块的人来说总结一下,帮助很大,但对于新手有可能就云里雾里了。虽然我研究不深,但纵向讲一下这一块内容,对新手入门有可能会有所帮助,也算是自己对这块内容的一种总结。只讨论技术,不涉及细节和Demo。

    本篇文章涵盖一下几部分内容:

    1. 什么是异步编程,为什么会需要异步编程

    2. .NET下...

继续阅读

发表在 article | 标签为 | C#下的异步编程及其同步机制已关闭评论

轻量级 Lock Free 线程安全的 Queue 的C#2.0实现

2.0里面又没有ConcurrentCollection的相关类

不得已,自己写了一个,

本来想用传统的lock实现的, 不过考虑到其中的操作非常轻量级...最终还是用了Lock Free

使用原子操作 InterLocked 替换掉常用的lock关键字

Try起头的方法都有尝试次数限制,超过限制以后就退出并返回false

public sealed class SafedQueue<T>
    {
        #region private Fields
        private int isTaked = 0;
        private Queue<T&g...

继续阅读

发表在 article | 标签为 | 轻量级 Lock Free 线程安全的 Queue 的C#2.0实现已关闭评论

c# 四舍五入

C# 中没有四舍五入函数,程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法

Bankers rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的

Math.Round 方法默认的也是 Banker 舍入法

在 .NET 2.0 中 Math.Round 方法有几个重载方法
Math.Round(Decimal, MidpointRounding)
Math.Round(Double, MidpointRounding)
Math.Round(Dec...

继续阅读

发表在 article | 标签为 | c# 四舍五入已关闭评论

使用SharpZipLib实现zip压缩

使用国外开源加压解压库ICSharpCode.SharpZipLib实现加压,该库的官方网站为
http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx


 

#region 加压解压方法
        
/// <summary>
        
/// 功能:压缩文件(暂时只压缩文件夹下一级目录中的文件,文件夹及...

继续阅读

发表在 article | 标签为 , | 使用SharpZipLib实现zip压缩已关闭评论

windows 2003 x64 iis6 的32bit 和64bit

IIS 6.0 可支持 32 位和 64 位两种模式。但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式。ASP.NET 1.1 只在 32 位模式下运行。而 ASP.NET 2.0 在 32 位或 64 位模式下都可以运行。因此,如果想要同时运行 ASP.NET 1.1 和 ASP.NET 2.0,必须在 32 位模式下运行 IIS。

要在 ASP.NET 的不同版本之间切换,请访问以下 Microsoft Developer Network (MSDN) 网站以下载并安装 ASP.NET 1.1 和 ASP.NET 2.0:
http://msdn2.micr...

继续阅读

发表在 web server | 标签为 | windows 2003 x64 iis6 的32bit 和64bit已关闭评论

C#3.0基于Speech.Synthesis调整语音朗读语调范例

using System;
using System.Speech.Synthesis;
namespace Speech_Synthesis
{
    public partial class Window1 : System.Windows.Window
    {
        public Window1()
        {
            InitializeComponent();

            SpeechSynthesizer synthesizer = new SpeechSynthesizer();
    ...

继续阅读

发表在 article | 标签为 , , , | C#3.0基于Speech.Synthesis调整语音朗读语调范例已关闭评论

VS2005 模板的制作方法

Visual Studio 2005 提供的模板功能非常不错,本文演示如何创建一个带有信息头的Class模板。

1. 创建一个如图所示的Class1.cs文件。有关模板参数请查看 MSDN 帮助文档。
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vssoln/html/1b567143-08c6-4d7a-b484-49f0671754fe.htm

uploads/200606/23_210046_snap1.gif

2. 使用文件菜单中的 "导出模板" 功能开始制作模板。

uploads/200606/23_210050_snap2.gif

3. 选择 "项模板" 。

uploads/200606/23_210055_snap3.gif

4. 选中我们刚才创建的 "Class1" 类文件。

uploads/200606/23_210059_snap4.gif

5. 输入模板信息。完成后会自动在 "我的文档\Visual Studio 2005\Templates" 和 "我的文档\Visual Studio 2005\My Exported Templates" 目录下创建模板文件 "Team Project Class.zip"。

uploads/200606/23_210103_snap5.gif

6. 好了,我们试试效...

继续阅读

发表在 .net | 标签为 , | VS2005 模板的制作方法已关闭评论

ASP.NET MVC 理解

一.摘要

一个Url请求经过了Routing处理后会调用Controller的Action方法. 中间的过程是怎样的? Action方法中返回ActionResult对象后,如何到达View的? 本文将讲解Controller的基本用法,  深入分析Controller的运行机制, 并且提供了创建所有类型Action的代码. 值得学习ASP.NET MVC时参考.

二.承上启下

在上一篇文章中, 我已经学会了如何使用Routing获取Controller和Action, 随后的程序会调用Controller中的Action方法.

每个Action方法都要返回一个ActionResult对象. 一个Action会将数据传递给View,如图:

image

三.Controller与Action的作用

1.职责

Controller负责将获取Model数据并将Model传递给View对象.通知View对象显示.

2.ASP.NET MVC中的Controller和Action

在ASP.NET MVC中, 一个Controller可以包含多个Action. 每一个Action都是一个方法, 返回一个Action...

继续阅读

发表在 article | 标签为 , | 57条评论

C#中用GDI+生成饼状图和柱状图

 

using System;
using System.IO;//用于文件存取

using System.Data;//用于数据访问

using System.Drawing;//提供画GDI+图形的基本功能
using System.Drawing.Text;//提供画GDI+图形的高级功能
using System.Drawing.Drawing2D;//提供画高级二维,矢量图形功能
using System.Drawing.Imaging;//提供画GDI+图形的高级功能
namespace lc.laili.Web.Code
{
/// <summary>
/// MyImage 的摘要说明。
/// </summary>
public class MyImage
{
public MyImage()
{
   //
   // TODO: 在此处添加构造函数逻辑
   //

}

 

/// <summary>
/// 数据源是PieChartValue对象的饼状图
/// </summar...

继续阅读

发表在 article | 标签为 , | 58条评论

c# GDI+简单绘图

最近对
GDI+
这个东西接触的比较多,也做了些简单的实例,比如绘图板,仿
QQ
截图等.

  最早接触这个类,是因为想做仿
QQ
截图的效果.巧的很,学会了如何做截图后,
.NET
课堂上老师也正巧要讲关于
c#
绘图方面的知识,并且我自己又在网上学习金老师的培训班,也是要用到这个类.在学习中有一些体会,所以准备把这些体会记下来,因为内容比较多,可能我会分几次写.

  废话不多说了,我们先来认识一下这个
GDI+
,看看它到底长什么样
.

GDI+

Graphics Device Interface Plus
也就是图形设备接口
,
提供了各种丰富的图形图像处理功能
;

C#.NET
中,使用
GDI+
处理二维(
2D
)的图形和图像,使用
DirectX
处理三维(
3D
)的图形图像
,
图形图像处理用到的主要命名空间是
System . Drawing
:提供了对
GDI+
基本图形功能的访问,主要有
Graphics
类、
Bitmap
类、从
Brush
类继承的类、
Font
类、
Icon
类、
Image
类、
Pen
类、
Color
类等
.

大概了解了什么是
GDI+

,
我们来看一下绘图要用到的主要工具
,
要画图
,
肯定要画板

,

C#
中画板可以通过
Graphic...

继续阅读

发表在 article | 标签为 , | c# GDI+简单绘图已关闭评论

编写简单的脚本解释器

首先声明一下以下文章是跟据我用C#写的脚本解释器的经验之谈,如不认可也请不要找本人。

一般写个脚本解释器需要以下的步骤:

源程序-词法分析-语法分析-生成中间代码-解释中间代码

一、我写的脚本解释器就是跟据上面的过程写的,下面说明一下本脚本解释器的语法。

1、语法规则:

(1)script_begin代表语句开始

(2)script_end代表语句结束

(3)条件语句:if 表达式 语句 endif

(4)循环语句:while 表达式 语句 endwhile

(5)赋值语句:变量=表达式

(6)表达式:

(为方便我们这里使用产生式来说明)

expr->expr+term|expr-term|term|term>=term|term<=term|term==term|term!=term|term>term|term<term|term

term->term*factor|term/factor|factor

factor->(expr)|数字|变量|字符串|!变量

(注意:产生式中的->代表前面的值可以是后面中的任何一个值,|代表着或的意思)

(7)变量:本脚本只有全局...

继续阅读

发表在 article | 标签为 , | 编写简单的脚本解释器已关闭评论

ASP.NET视图状态验证MAC失败 解决办法

验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <m … 继续阅读

发表在 article | 标签为 , | ASP.NET视图状态验证MAC失败 解决办法已关闭评论

演练如何缓存依赖于 SQL Server 数据库中数据的 ASP.NET 页

此演练演示如何缓存依赖于 SQL Server 数据库中数据的 ASP.NET 页。

ASP.NET 输出缓存的一项高级功能是 SQL 缓存依赖项。SQL 缓存依赖项使您可以缓存依赖于 SQL Server 表中数据的页。您可以配置 SQL Server 和 ASP.NET 以缓存页请求,降低服务器工作负荷,直到页所依赖的数据已在 SQL Server 中更新为止。对于相对保持静态的产品目录或客户注...

继续阅读

发表在 article | 标签为 , | 演练如何缓存依赖于 SQL Server 数据库中数据的 ASP.NET 页已关闭评论

18位身份证格式验证算法

18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份号码",另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。...

继续阅读

发表在 article | 标签为 | 18位身份证格式验证算法已关闭评论

在C#中获取如PHP函数time()一样的时间戳

在C#中获取如PHP函数time()一样的时间戳 c#中没有象PHP一样的tim … 继续阅读

发表在 article | 标签为 | 在C#中获取如PHP函数time()一样的时间戳已关闭评论