| 定時器 | 執行緒模型 | 依賴 UI | 適用場景 |
|---|---|---|---|
| System.Windows.Forms.Timer | 單執行緒 (UI 執行緒) | 是 | 簡單 UI 週期性更新 |
| System.Timers.Timer | 多執行緒 | 否 | 伺服器端、精確間隔 |
| System.Threading.Timer | 執行緒池 | 否 | 高頻、輕量背景工作 |
public partial class Form1 : Form
{
System.Windows.Forms.Timer t;
private void Form1_Load(object sender, EventArgs e)
{
t = new System.Windows.Forms.Timer();
t.Interval = 2000; // 2 秒
t.Enabled = true;
t.Tick += timersTimer_Elapsed;
t.Start();
}
private void timersTimer_Elapsed(object sender, EventArgs e)
{
DataSet ds = new DataSet();
using (var sda = new SqlDataAdapter("select * from sysobjects order by newid()", "server=.;uid=sa;pwd=sa;database=master;"))
sda.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
// 直接操作 UI,無需 Invoke
}
}
最簡單、最安全,適合 WinForms 簡單週期性資料重整。缺點:間隔精度受 UI 執行緒忙碌度影響,長時間運算會阻塞介面。