C# 中关于程序睡眠(控制台程序)问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fengyj
V2EX    C#

C# 中关于程序睡眠(控制台程序)问题

  •  
  •   fengyj 2018-03-25 13:33:28 +08:00 5870 次点击
    这是一个创建于 2820 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这学期学 C#,老师布置了个问题:

    场景:请输出你的青蛙旅行了多长时间。在该场景中,先输出一句话“青蛙出去旅行了”,让程序睡眠几秒(随机产生一个 5~10 秒的数值),睡眠完毕后计算间隔时间,最后输出“青蛙回家,它共旅行了?秒”。其中有两部分内容未在课堂上讲过,请自行上网百度需要什么方法、什么类或什么命名空间,并编写代码实现。

    时间间隔可以通过 DateTime 来计算。 随机产生数值也单的:

    Random ran = new Random(); int n = ran.Next(5, 10); 

    关键是让程序睡眠,这怎么整?

    13 条回复    2018-05-07 19:22:43 +08:00
    fengyj
        1
    fengyj  
    OP
       2018-03-25 13:38:49 +08:00 via Android
    程序睡眠程序怎么一个机制,之前碰 js 看到过相关函数
    GordianZ
        2
    GordianZ  
       2018-03-25 13:49:39 +08:00
    fengyj
        3
    fengyj  
    OP
       2018-03-25 13:52:38 +08:00 via Android
    @GordianZ 控制台程序的也可以线程睡眠么?
    GordianZ
        4
    GordianZ  
       2018-03-25 13:53:32 +08:00   2
    @huiyifyj 你在 main 里面就是主线程啊,这里的线程是当前线程。
    oh
        5
    oh  
       2018-03-25 14:06:07 +08:00 via iPhone   1
    思路反了吧,看你这个逻辑,应该是先产生一个要睡眠的时间 s,然后调用 thread.sleep(s) 让程序睡眠,睡眠结束之后直接输出 s 就行了,不用再计算两个时间差
    ctsed
        6
    ctsed  
       2018-03-25 14:23:42 +08:00
    http://zh.lmgtfy.com/?q=C%23+%E7%9D%A1%E7%9C%A0
    (来这问作业效率太低了)
    fengyj
        7
    fengyj  
    OP
       2018-03-25 16:34:09 +08:00 via Android
    @oh 我也疑问啊,但老师要求用 DateTime 前后时间计算后,输出时间,我也好奇,这有点让人想不透,就像明明知道答案却一定要拐着弯求结果
    justinwu
        8
    justinwu  
       2018-03-25 16:56:32 +08:00 via iPhone   2
    @huiyifyj 严格来讲,thread.sleep 是不精确的,不是你让它 sleep 多少毫秒,醒来就是过了多少毫秒的,这受到线程调度、线程优先级、系统 CPU 负载等等影响。
    qsnow6
        9
    qsnow6  
       2018-03-25 17:35:28 +08:00
    c#节点难得这么热闹
    MinQ
        10
    MinQ  
       2018-03-25 20:06:45 +08:00 via Android   1
    这个应该就是单纯的 thread.sleep 吧,要精确的话其实也行,把系统时间片调低就行了,API 是 timeBeginPeriod
    zingl
        11
    zingl  
       2018-03-25 23:47:32 +08:00
    > 请自行上网百度

    seriously?现在大学教面向百度编程了啊
    fengyj
        12
    fengyj  
    OP
       2018-03-26 00:18:39 +08:00 via Android
    @zingl 呃,这只是扩展题啦,百度也没就说一定百度啊,这是叫你善用搜索而已。
    thereisnoif
        13
    thereisnoif  
       2018-05-07 19:22:43 +08:00
    void Main()
    {
    Console.WriteLine("青蛙出去旅行了");
    int travelDuration = 0;

    var rand = new Random();
    int time = rand.Next(5, 10);

    Travel(time).GetAwaiter().GetResult();
    travelDuration += time;

    Console.WriteLine($"青蛙回家,它共旅行了{travelDuration}秒");
    }

    async Task Travel(int seconds)
    {
    await Task.Delay(seconds * 1000);
    }
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2707 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 07:45 PVG 15:45 LAX 23:45 JFK 02:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86