0

タイマーが 3 で開始し、アクションを実行するゼロに達するまで毎秒減少するように、タイマーを置き換えるために減少するカウンターを作成する方法を考えています。ヘルプはありますか?

// Change Image from "Hut" to Mole \\
private void ChangeImage()
{
        Image newImage = HoleImage();
        molePopup = MoleImage();
        int numCol = Convert.ToInt32(NumberOfColumns);
        //Random Number - Col
        Random randomColumns = new Random();
        int ranCol = randomColumns.Next(1, numCol);
        //Random Number - Row
        Random randomRow = new Random();
        int ranRow = randomRow.Next(1, NumberofRows);
        string Moleimage = TUtils.GetIniFileString(Moleini, "ImagePath", "PictureFile", Root + "mole2.png");
        //Populate Grid with Mole at Random Times \\
        Grid.SetRow(molePopup, ranRow);
        Grid.SetColumn(molePopup, ranCol);
        grid_Main.Children.Add(molePopup);

        molePopup.MouseUp += new MouseButtonEventHandler((o, e) =>
        {
            MolePoints++;
            grid_Main.Children.Remove(molePopup);
        });
}
4

2 に答える 2

0
  1. DispatcherTimerを使用する
  2. interval プロパティを 1000 (= 1 秒) に設定します。
  3. カウントダウン タイマーを表す変数を作成する
  4. カウントダウン変数がゼロかどうかをチェックする tick イベントを作成します。ゼロの場合 => タイマーを停止し、アクションを実行します。そうでない場合 => 変数を減らす
  5. タイマーを開始する
于 2013-05-29T00:09:23.640 に答える
0

よくわからないかもしれませんが、プログラムにスレッドが 1 つしかない限り (それ以外は何も起こらない限り)、次のようなものを使用します。

for(int i = 3; i > 0; i--)
{
    Thread.Sleep(1000);
}

doWhatever();

ループの反復ごとに、スレッドを 1000 ミリ秒、つまり 1 秒間「スリープ」させます。これを行うには、 System.Threading with を含める必要がありますusing System.Threading。バックグラウンドで何かを実行している場合は、Sleep の代わりに別のメソッドを使用してください。これは、指定された期間、スレッドの実行をロックするためです。

編集:

これは、メソッドの MSDN ドキュメントですThread.Sleep()。私があなたの意味を正しく理解すれば、あなたがやりたいことと非常に似ているようです。

于 2013-05-28T23:52:49.037 に答える