fengyj
V2EX  ›  C#

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

  •  
  •   fengyj · Mar 25, 2018 · 6681 views
    This topic created in 3145 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    seriously?现在大学教面向百度编程了啊
    fengyj
    fengyj
    OP
    Mar 26, 2018 via Android
    12
    @zingl 呃,这只是扩展题啦,百度也没就说一定百度啊,这是叫你善用搜索而已。
    thereisnoif
    thereisnoif
    May 7, 2018
    13
    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);
    }
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5441 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 02:04 · PVG 10:04 · LAX 18:04 · JFK 21:04
    ♥ Do have faith in what you're doing.