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ức | Hà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
}