随笔 - 3  文章 - 0 评论 - 0 trackbacks - 0

 c#中事件,大家众所周知,关键字event,定义一个事件,但是,事件的修饰符需要的是一个代理。代理是什么?代理,就是对于一个事件的引用。相当于c中的指针。其实,最简单的代理机制,大家都见过,看看: btnSelect.Click += new EventHandler(btnSelect_Click);    EventHandler就定义了一个代理,于是,当我们点击一个按钮的时候,其Click事件会触发,那么响应并处理该事件的就是btnSelect_Click。好,今日,群里一朋友询问,一个类似加热器报警的程序能否更简便,我就建议不如用事件机制来实现。因为报警主要是判断温度是否达到指定值,超过这个值就报警,很典型的应用事件的场合啊。初略代码如下:

View Code
 ///<summary>
/// 热水器
///</summary>
public class Heater
{
public delegate void showTempDel(int x);
public event showTempDel showTemp;

private int trmparature;
///<summary>
/// 温度
///</summary>
public int Temperature
{
get { return trmparature; }
set
{
trmparature = value;
if (trmparature > 98)
{
showTemp(trmparature);
}
}
}

///<summary>
/// 加热
///</summary>
public void Heating()
{
Temperature += 1;
}

///<summary>
/// 警报器
///</summary>
///<returns></returns>
//public bool Alarm()
//{
// if (Temperature > 98)
// return true;
//}
}
static void Main(string[] args)
{
Heater heater = new Heater();
heater .showTemp +=new Heater.showTempDel(heater_showTemp);
heater.Temperature = 100;
}
private static void heater_showTemp(int temp)
{
if (temp > 98)
{
MessageBox.Show(">98!");
}
}
}

其实只是一个很简单的逻辑,但是应用事件和代理来实现,会很简洁。可能,这也是事件给我们带来的便利的一面吧,当然,事件的应用很广泛,这只是一个例子,大家可以拓展开来。

posted @ 2011-11-10 16:30 IT步行者 阅读(32) 评论(0) 编辑
    只有注册用户登录后才能阅读该文。阅读全文
posted @ 2011-05-23 15:04 IT步行者 阅读(85) 评论(0) 编辑

题记:首次发个随笔,把以前写的一个笔记发过来,劝当记录,以供查询。

jquery的推出确实解决了大部分程序员都感到头痛的事情,无论是对于UI的访问和处理,还是在一系列的远程访问等方面都有了很大的改善,或者说是一种解放。以往对于远程访问,对于跨域调用,如果你还在为构建ajax所烦恼,还在为不同的浏览器不兼容而郁闷,那么jquery无疑对于大家来说是一个不小的进步,因为他能帮你解决你的烦恼,使你有更多的时间放置在对于业务逻辑的处理上。本文就是基于一个跨域访问的需求的简单实现,功能是实现本地与远程服务器的信息交换。

 jquery的$.get(),$.post(),以及更为基础的$.ajax()都在对于远程信息的访问和投送上提供了便利,但是对于跨域访问往往不能很好的胜任,那么对于跨域的信息交互我们就可以通过jquery.getjson()或者是$.getjson()来实现。调用方式:
     jQuery.getJSON(url, function(data) { 
         //
              });
实例:登录,提交远程机器验证
//本例的url地址为本地地址,但是也设置为一可用的远程地址
前台:$(document).ready(function(){
$("#btnLogin").bind("click",function()
{
 jQuery.getJSON("Key.aspx?name='"+$("#username").val()+"'+pwd='"+$("#passwords").val()+"'&callback=?", function(data) {
                alert("服务器端返回结果为:"+data);
                $("#result").text("服务器端返回结果为:"+data);
            });
}
);
});
后台:
string name = Request.QueryString["name"];
string pwd= Request.QueryString["pwd"];

        if (valdate(name,pwd) )
        {
            string fun = (Request.QueryString["callback"]);
          //string fun = (Request.QueryString["theback"]); //自定义回调方法
            Response.Write(fun+"('登陆成功!')");
            Response.Flush();s
        }
上例简单的实现了在某前台页面与异地信息交换,要注意的是在getjson()的访问中callback的参数不能漏掉,且该参数要设置为callback=?的方式,因为jquery库在调用的时候会动态的给callback赋值,大概为jsonp1298712852382,那么后台在回调的时候就可以通过调用该方法并输出到页面。上述只是简单对于getJson()异域调用的说明,但是在项目应用中我们还会有更加针对性的业务调用,也就是说对于某个业务调用我们会采用固定的回调来操作返回的信息,如果有机会,就下次再记吧。
本文是自己项目中的小心得,记下备个案以备日后查找。欢迎大家拍砖。呵呵!
posted @ 2011-05-11 16:02 IT步行者 阅读(499) 评论(0) 编辑
仅列出标题