Winformのフォームデータをリアルタイムに更新する方法
リアルタイムでWinFormウィンドウデータを更新するには、タイマーコンポーネントまたはバックグラウンドスレッドを使用してデータを更新できます。
- タイマーコントロールを使用して:
- バックグラウンドスレッドの使用:
画面のデータを更新する際は、コントロールに跨ってスレッドアクセスするルールに従う必要があります。つまり、コントロールを作成したスレッド上でコントロールにアクセスできるということです。InvokeRequired プロパティと Invoke メソッドを使用して、コントロールへの跨ってスレッドアクセスが必要かどうかを判断し、更新操作を実行できます。
こちらのコードを例にご紹介します。
タイマーコントロールを使用して:
private Timer timer;
public Form1()
{
InitializeComponent();
timer = new Timer();
timer.Interval = 1000; // 每1秒钟刷新一次数据
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
// 刷新数据的逻辑
// ...
// 使用Invoke方法将更新UI的逻辑委托给窗体线程执行
if (InvokeRequired)
{
Invoke(new Action(() =>
{
// 更新UI的逻辑
// ...
}));
}
else
{
// 更新UI的逻辑
// ...
}
}
バックグラウンドスレッドを使用する。
private Thread refreshThread;
public Form1()
{
InitializeComponent();
// 在窗体加载时创建后台线程
refreshThread = new Thread(new ThreadStart(RefreshData));
refreshThread.IsBackground = true;
refreshThread.Start();
}
private void RefreshData()
{
while (true)
{
// 刷新数据的逻辑
// ...
// 使用Invoke方法将更新UI的逻辑委托给窗体线程执行
if (InvokeRequired)
{
Invoke(new Action(() =>
{
// 更新UI的逻辑
// ...
}));
}
else
{
// 更新UI的逻辑
// ...
}
Thread.Sleep(1000); // 每1秒钟刷新一次数据
}
}
上で述べたことは、WinFormフォームのデータリアルタイムリフレッシュを実現する一般的な2つの方法です。具体的なニーズに応じて適した方法を選択すればいいでしょう。