Winformのフォームデータをリアルタイムに更新する方法

リアルタイムでWinFormウィンドウデータを更新するには、タイマーコンポーネントまたはバックグラウンドスレッドを使用してデータを更新できます。

  1. タイマーコントロールを使用して:
  2. バックグラウンドスレッドの使用:

画面のデータを更新する際は、コントロールに跨ってスレッドアクセスするルールに従う必要があります。つまり、コントロールを作成したスレッド上でコントロールにアクセスできるということです。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つの方法です。具体的なニーズに応じて適した方法を選択すればいいでしょう。

bannerAds