C#怎样实现延时执行代码的功能?

libertyang 2009-11-04 09:56:34
C#怎样实现延时执行代码的功能? 请高手指点:

需求如下:
A用户-->执行方法1-->执行方法2-->执行方法3-->流程结束;
B用户-->执行方法1-->执行方法2-->执行方法3-->流程结束;
.
.
.
N用户-->执行方法1-->执行方法2-->执行方法3-->流程结束;

想在方法1 , 方法2,方法3 之间加入一个延时函数,即是方法1执行完毕,过5分后再执行方法2;
且在A用户运行过程中,又不影响B用户等其他用户的操作;

一天会有几百个用户执行这个流程,延时代码该如何实现呢?
...全文
18395 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
cn1098035521 2011-01-22
  • 打赏
  • 举报
回复
还是用线程的好,执行完成后就销毁它,而且线程开始后你根据感觉不到卡的现象,在线程执行方法里面加Thread.Sleep(2000);来实现延迟,这样不会出现界面假死,假死这个很严重,如果用户转动窗口就会出现假死!!!
libertyang 2009-11-06
  • 打赏
  • 举报
回复
谢谢各位的热心帮助 先研究一下多线程
Jave.Lin 2009-11-06
  • 打赏
  • 举报
回复
为啥不用灵活的Thread?

用那个Timer控件很没灵活性。
N_ccw 2009-11-06
  • 打赏
  • 举报
回复
用线程。。。
Jave.Lin 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 libertyang 的回复:]
引用 22 楼 starfd 的回复:
还是多线程thread.sleep好点吧
timer是影响所有的,每个线程自己sleep,不影响其他的

thread.sleep 会把线程sleep 掉  程式就挂那了
会影响其他用户的操作
[/Quote]

给每个用户一个线程。

那就不会阻塞到其它用户线程了,不会影响到。
mbh0210 2009-11-05
  • 打赏
  • 举报
回复
Thread.Sleep(等待时间毫秒);
libertyang 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 fengling2001 的回复:]
C# codepublicvoid LostTime()
{long beginTime= DateTime.Now.Ticks;while (true)
{long endTime= DateTime.Now.Ticks;if ((endTime- beginTime)> 1e8)break;
}return;
}

[/Quote]1e8? 这个如何理解?
Jave.Lin 2009-11-05
  • 打赏
  • 举报
回复
Thread.Sleep(1000);//1000ms=1s,毫秒
libertyang 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 starfd 的回复:]
还是多线程thread.sleep好点吧
timer是影响所有的,每个线程自己sleep,不影响其他的
[/Quote]
thread.sleep 会把线程sleep 掉  程式就挂那了
会影响其他用户的操作
l171147904 2009-11-05
  • 打赏
  • 举报
回复
可以使用定时器来操作,System.Threading.Timer 类最适合
  • 打赏
  • 举报
回复
还是多线程thread.sleep好点吧
timer是影响所有的,每个线程自己sleep,不影响其他的
koren9 2009-11-05
  • 打赏
  • 举报
回复
Timer控件

Timer.Enabled 属性用于设置是否启用定时器

Timer.Interval 属性,事件的间隔,单位毫秒


Timer.Elapsed 事件,达到间隔时发生。

例子:

public class Timer1
{

public static void Main()
{
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed+=new ElapsedEventHandler(OnTimedEvent);
// Set the Interval to 5 seconds.
aTimer.Interval=5000;
aTimer.Enabled=true;

Console.WriteLine("Press \'q\' to quit the sample.");
while(Console.Read()!='q');
}

// Specify what you want to happen when the Elapsed event is raised.
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Console.WriteLine("Hello World!");
}
}


朋友们关注一下我的小游戏网哦。http://www.51wanyouxi.com
libertyang 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 qldsrx 的回复:]
C# code
System.Threading.Timer t=new System.Threading.Timer(new TimerCallback(TimerProc1));
t.Change(1000,1000);privatevoid TimerProc1(object state)
{
Syste?-
[/Quote]TimerCallback 是.NET FRAMEWORK 3.5版本用的把
2.0MS 运行不起来
mohugomohu 2009-11-05
  • 打赏
  • 举报
回复
只能用线程
Dearbear_zk 2009-11-05
  • 打赏
  • 举报
回复
对你真正的目的还不是很了解,
如果只是要延迟下时间的话,在每个方法后面 加个 sleep()函数就应该OK。
sleep()只把当前的线程睡了,不影响其他线程。
楼主可以试下!
libertyang 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 qldsrx 的回复:]
C# code
System.Threading.Timer t=new System.Threading.Timer(new TimerCallback(TimerProc1));
t.Change(1000,1000);privatevoid TimerProc1(object state)
{
Syste?-
[/Quote]
这样写的话  是不是 有N 个用户就要写 N 个TimerProc ?
为每个用户各设置一个timer?

有无办法只写一个Timer ,A用户的方法在运行期间,又不影响其他用户 的方法?
qldsrx 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 libertyang 的回复:]
引用 14 楼 qldsrx 的回复:
C# code
            System.Threading.Timer t=new System.Threading.Timer(new TimerCallback(TimerProc1));
            t.Change(1000,1000);privatevoid TimerProc1(object state)
        {
            Syste?-
TimerCallback 是.NET FRAMEWORK 3.5版本用的把
2.0MS 运行不起来
[/Quote]

TimerCallback 委托
.NET Framework
受以下版本支持:3.5、3.0、2.0、1.1、1.0
VistaKobe 2009-11-05
  • 打赏
  • 举报
回复
多线程,每个线程sleep()
coolio1 2009-11-05
  • 打赏
  • 举报
回复
timer吗?
sinodzh 2009-11-04
  • 打赏
  • 举报
回复
将当天线程睡眠。可以用backGroundwork做。出异常了还可以跟踪到。
加载更多回复(17)

110,561

社区成员

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

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

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