private void OnTimer(object sender, EventArgs e) { while(reader.Read())//读取数据库下一行电话号码 { 1、调用阿里云给手机发送一条短信 2、if(现在是21点07分) Thread.Sleep(120000); } }
[quote=引用 5 楼 hanjun0612 的回复:] 抱歉,前面没注意。 更正一下, 这里说的timer是System.Threading.Timer thread.sleep: 将当前线程挂起指定的毫秒数。 timer每次都是开新线程去干活。所以你的thread.sleep根本没有影响所有的timer开启的线程。 而如果是System.Windows.Forms.Timer 那么只能等到上一次执行完了,才会继续执行后一个tick事件。 至于你这里的发送三条,我想可能是因为while中,先去发送短信,然后if判断没有进入,导致连续while发送了3条短信
抱歉,前面没注意。 更正一下, 这里说的timer是System.Threading.Timer thread.sleep: 将当前线程挂起指定的毫秒数。 timer每次都是开新线程去干活。所以你的thread.sleep根本没有影响所有的timer开启的线程。 而如果是System.Windows.Forms.Timer 那么只能等到上一次执行完了,才会继续执行后一个tick事件。 至于你这里的发送三条,我想可能是因为while中,先去发送短信,然后if判断没有进入,导致连续while发送了3条短信
在 reader.Read() 读空查询结果前,短信总是要发送的 收到了3条短信 的原因是:查询结果集中有你3个号码 Thread.Sleep(120000); 只是推迟了下一条短信的发送 何况还是有条件执行的
1、调用阿里云给手机发送一条短信 这里异步了吧?
110,537
社区成员
642,576
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧