Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Đặt lại Stopwatch về 0 trong C#


Giới thiệu

Phương thức Restart() của lớp Stopwatch (namespace System.Diagnostics) dừng đồng hồ, đặt thời gian về 0 và bắt đầu đếm lại ngay lập tức. Tương đương với Stop() + Reset() + Start().

Ví dụ cơ bản

Stopwatch s = Stopwatch.StartNew();
Thread.Sleep(500);
s.Restart(); // Đặt về 0 và bắt đầu lại
Thread.Sleep(500);
Console.WriteLine(s.Elapsed); // ~500ms

Ví dụ hoàn chỉnh

using System;
using System.Threading;
using System.Diagnostics;

public class Demo
{
    public static void Main()
    {
        Stopwatch s = Stopwatch.StartNew();
        Thread.Sleep(500);
        // Restart: đặt timer về 0 và bắt đầu lại
        s.Restart();
        Thread.Sleep(500);
        Console.WriteLine(s.Elapsed);
    }
}

Kết quả

00:00:00.5004937

So sánh các phương thức

Phương thứcHành động
Start()Bắt đầu/tiếp tục đếm (giữ thời gian cũ)
Stop()Dừng đếm (giữ thời gian)
Reset()Đặt thời gian về 0, trạng thái Stopped
Restart()Reset + Start (đặt về 0 và chạy ngay)

Khi nào dùng Restart?

  • Đo thời gian nhiều đoạn liên tiếp (lap timing).
  • Reset bộ đếm trước khi bắt đầu phép đo mới trong vòng lặp.
  • Thay thế cho Stop() -> Reset() -> Start() (ngắn gọn, atomic).

Ví dụ đo nhiều lần (lap)

Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < 3; i++)
{
    // Làm việc gì đó
    Thread.Sleep(100);
    Console.WriteLine($"Lap {i+1}: {sw.Elapsed}");
    sw.Restart(); // Chuẩn bị cho lap tiếp theo
}