触发事件的疑问。

jundywoo 2007-06-20 12:41:43
自己写上一个类,类有一个公共属可以设定一个时间,也定义一个事件。如果到这个时间后,这个类会触发这个事件。像一个闹钟。
问题是,我如何完全靠代码去写这个类呢?
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
RedGoldFish 2007-06-20
  • 打赏
  • 举报
回复
LZ爽快,多谢!
jundywoo 2007-06-20
  • 打赏
  • 举报
回复
终于实现了闹钟功能,谢谢RedGoldFish(红金鱼)
YUAN168 2007-06-20
  • 打赏
  • 举报
回复
如果是执行SQL语句,可以用SQL中的任务
jundywoo 2007-06-20
  • 打赏
  • 举报
回复
我是用c#的咯
RedGoldFish 2007-06-20
  • 打赏
  • 举报
回复
用Timer是个好办法.不知道LZ是在什么程序中用. 建议用System.Threading.Timer,它可以用在Windows Service中(System.Windows.Forms.Timer 一般不行),而且可以让它只触发一次.

System.Threading.Timer myTimer = new System.Threading.Timer(MyCallBack);

//System.Threading.Timeout.Infinite 保证它只触发一次.
myTimer.Change(MyFireTime.Subtract(System.DateTime.Now ), System.Threading.Timeout.Infinite);

private void MyCallBack(object state)
{
//做闹钟里要做的工作.
}
jundywoo 2007-06-20
  • 打赏
  • 举报
回复
回ProjectDD:
现在我的问题就在于,如何可以在不独占线程的情况下去做这个“周期性轮询时间的代码段”。当我设定一个属性,像timer一样,enable就去周期性地轮询时间,disable就停止?又不影响我其他主线程的代码执行?
luffy927 2007-06-20
  • 打赏
  • 举报
回复
我是这么想的:
在类开始的时候初始化一个timer,设定一个时间段,然后在timer事件触发时触发事件,顺便把timer关了。
例如: private System.Windows.Forms.Timer timer1;
然后构造函数中
timer1.Enabled = true;
timer1.Interval = 10000; //时间段。
绑定事件:
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
触发:
private void timer1_Tick(object sender, EventArgs e)
{
1.要触发的事件。
类.event += new 类2.delegate(处理事件的方法);
2.将timer无效化
timer1.Enabled = false;
}
ProjectDD 2007-06-20
  • 打赏
  • 举报
回复
在Main()中写一个周期性轮询时间的代码段,然后再其中判断就可以了,如果要用事件就在其中触发,"OnYourEvent(this,new EventArgs());"

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧