1

ユーザーがスタートボタンをクリックするたびに、プログラムが3秒から10秒の間スリープし、ユーザーがそのボタンをクリックできるようにするボタンが表示され、時間が印刷され、ユーザーがボタンをクリックするのにかかる時間をミリ秒単位でユーザーに伝えます。

Thread.Sleep()私は使用する必要があることを知っていますEnvironment.TickCount()

問題は、プログラムを3〜10秒の間でランダムにスリープさせる方法がわからないことです

答えてくれてありがとう。すべてが機能していますが、小さな問題が発生します

問題は、最初のラベルに「Get ready...」と書かれていないことですが、「Get ready...」と印刷される前に 3 ~ 10 秒間スリープします。私が欲しいのは、プログラムが「Get ready ...」を出力してから、3〜10秒間スリープすることです。

コードは次のとおりです。

    //Starts the count
    private void btnStart_Click(object sender, EventArgs e)
    {
        label1.Text = "Get ready...";

        //Generate random sleeptime
        Random waitTime = new Random();
        seconds = waitTime.Next(3 * 1000, 11 * 1000);

        //Put the thread to sleep
        System.Threading.Thread.Sleep(seconds);

        //Show the button
        btnNow.Show();
        label2.Text = "NOW!";

        //Count the time in milliseconds
        start = Environment.TickCount;
    }
4

3 に答える 3

9

Random クラスを使用する必要があります。

Random rnd = new Random();
int number = rnd.Next(3,11);

リファレンスをご覧ください: http://msdn.microsoft.com/en-US/library/2dx6wyd4.aspx

最初の整数パラメータは包括的​​ですが、2 番目のパラメータは排他的であることに注意してください。したがって、10 ではなく 11 を使用する必要があります (10 秒を除外したい場合は、もちろん「10」に変更する必要があります)。

この数値に 1000 を掛けてミリ秒の値を取得し、その値で Thread.Sleep を使用できます。

于 2013-03-09T11:30:28.653 に答える
8

使用する

Random random = new Random();
mseconds=random.Next(3, 10) * 1000;   
System.Threading.Thread.Sleep(mseconds);
于 2013-03-09T11:29:29.457 に答える
0

テキストが変更されない理由は、GUI スレッドをスリープ モードにしているためです。これは、ラベル テキストを変更した後に Application.DoEvents メソッドを呼び出すことで修正できますが、別のスレッドでカウントを行う方がよいでしょう。

于 2014-07-01T08:19:38.973 に答える