none
可以在主控台應用程式暫停一段時間 RRS feed

  • 一般討論

  • 我們可以透過System.Windows.Forms.Form.ShowDialog()的特性,只有上面的那個對話框可以運作,其他的畫面都會被暫停(除了Timer以外)
    所以我做出了一個副程式可以讓主控台應用程式暫停一段時間後再執行後面的程式碼
    http://homepage.ntu.edu.tw/~b96201018/PAUSE.dll
    將這個dll加入參考後只要使用System.Pause.s(64*n);就可以讓主控台應用程式暫停n秒
    2009年8月8日 上午 09:50

所有回覆

  • 有考慮用 Thread.Sleep Method  嗎 ?

    http://msdn.microsoft.com/zh-tw/library/system.threading.thread.sleep(en-us).aspx
    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    2009年8月8日 上午 09:58
    版主
  • HI,

    如果要有畫面的, 可以使用內建計時功能的MessageBox, 請參考:MessageBox with a timeout for .NET
    2009年8月8日 上午 10:49
  • 這個不準喔

    using System;

    namespace ConsoleApplication1 {
        class Program {
            static void Main(string[] args) {
                while(true) {
                    int x = DateTime.Now.Millisecond;
                    System.Threading.Thread.Sleep(15);
                    Console.Write("{0} ",DateTime.Now.Millisecond - x);
                    Console.ReadKey(true);
                }
            }
        }
    }

    結果出來的都是15(-985)或16(-984)而不是1
    這意味程式碼要求暫停0.001秒,但實際上是0.015~0.016秒(我想應該是0.015625秒,也就是1/64秒)

    不過可以這樣做
    public static void zt(int x) {
                for(int i = 0;i < x;i++) {
                    System.Threading.Thread.Sleep(1);
                }
            }
    • 已編輯 Jorney 2009年8月21日 上午 01:22 打字錯誤
    2009年8月12日 上午 08:23
  • 不是不準,你的主機板是華碩的話會比較準,你可以看這篇裡面的回應:
    http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/03/24/657.aspx
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年8月12日 上午 08:48
  • Hi,

    看了一下你的程式
    你的程式是用Timer與ShowDialog來做
    Timer設為1毫秒觸發
    並在Timer_Tick去判斷是否超過設定的時間
    若是超過則把視窗關掉
    但Timer本身也是有誤差的
    你的方法沒有能較為精準

    至於你使用上拿64*n
    64看來是你自己電腦跑出來的誤差推算回來的
    這種作法不太對吧

    http://www.dotblogs.com.tw/larrynung/
    2009年8月12日 上午 09:10
  • 上面連結裡面有原始碼,
    1. 不讓單顆 CPU 空出來,可以精確到秒以下 5 位,也就是 0.01 ms,而誤差小於 5% ,也就是誤差小於 0.0005 ms,適用於極短時間。
    2. 讓 CPU 空出來,就是看主機板,例如華碩的可到 +1 ms ,技嘉的是 +10 ms ,最差是 10 ms ,這是因為 WinNT 的設計。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年8月12日 上午 09:30
  • 我很好奇,你們在玩什麼專案需要這麼精準的Timer

    2009年8月12日 上午 09:36
  • 我是模型的硬體控制... 模型因為尺寸縮小了,所以時間尺度也跟著變化,要模擬時,要換算對應的時間點...
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年8月12日 上午 10:00
  • 我很好奇,你們在玩什麼專案需要這麼精準的Timer

    就是要配合音效,音效到哪一個音的時候就要輸出哪些字
    2009年8月21日 上午 01:25
  • //就是要配合音效,音效到哪一個音的時候就要輸出哪些字
    那也不用那麼準.人對音效是很抽象的.每個人耳多對音的敏感不同.你只要給接近值就好了.
    2009年8月21日 上午 01:34