您的位置:首页 > 编程语言 > C#

c#事件学习

2008-01-08 11:50 281 查看
本文,是自己在日常中用到的事件,然后自己总结的,没有查看相关文件,如果有高手能够看到本问,还希望能够指点下.谢谢

2008年1月7日

项目介绍:

联通hlr数据清理

本系统,由于现阶段有三个厂家的hlr需要清理,同时,由于联通的设备只支持单通道,因此,每个厂家只能支持一条条数据的做,不能够支持多条同时做,但是,各厂家之间是并行的,同时,由于西门子设备做一个查询后,需要停一下,释放一些东西,因此,做同样的数据两的清理,西门子做的时间明显大于其他厂家.

以前公司同事,采用的是每一个厂家,新开一个进程,每次执行500个号码,同时,这样有可能会使得其他设备的本次清理完成后,还在等待西门子设备清理,并且,如果有一个设备清理的过程中,出现错误,那么整个程序就死掉了.

2007年1月7日,该项目运行一段时间后,领导需要解决这个问题,因此,本人从公司调到联通,帮忙解决这个问题,查看系统流程后,打算改用事件,异步,回调等来做.

当天,自己给出了一个大概的模型,研究了下这个方式的可行性.

代码介绍如下:

using System;

namespace HlrTaskTest

using System;

namespace HlrTaskTest

using System;

using System.Collections;

namespace HlrTaskTest

使用了下事件,因此,现在记录下一般的写法:

首先

定义一个委托

public delegate void TaskEventHandle(object o,TaskEventArgs e);

委托中的TaskEventArgs 参数

public class TaskEventArgs:EventArgs

定义一个事件

public event HlrTaskTest.TaskEventHandle BeginTask;

并写一个保护方法

protected void OnBeginTask()

由于这个地方使用了回调函数,BeginInvoke参数中的最后一个参数,不知道写什么,所以,用的null

则需要写一个回调函数

private void TaskRunToEnd(IAsyncResult ar)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: