C#实现计算数据和刷新ListView列表并发执行

下面是一个示例代码,演示如何在C#中实现计算列表的数据和刷新ListView控件的数据的并发执行:

cs 复制代码
using System;
using System.Collections.Generic;
using System.Threading;
using System.Windows.Forms;

class Program
{
    static List<int> dataList = new List<int>();
    static ListView listView = new ListView() { View = View.Details };

    static void Main()
    {
        // 添加列头
        listView.Columns.Add("Data");

        // 启动两个线程并发执行计算和刷新列表的操作
        Thread computeThread = new Thread(() => ComputeData(10, 20));
        computeThread.Start();

        Thread refreshThread = new Thread(() => RefreshListView());
        refreshThread.Start();

        Application.Run(new Form() { Controls = { listView } });
    }

    static void ComputeData(int a, int b)
    {
        int sum = a + b;
        Console.WriteLine($"Sum of {a} and {b} is {sum}");

        lock (dataList)
        {
            dataList.Add(sum);
        }
    }

    static void RefreshListView()
    {
        while (true)
        {
            Thread.Sleep(1000);

            lock (dataList)
            {
                listView.Items.Clear();
                foreach (var data in dataList)
                {
                    listView.Items.Add(new ListViewItem(data.ToString()));
                }
            }
        }
    }
}

在这个示例中,我们创建了一个ListView控件用来显示数据。然后启动了两个线程,一个用来计算数据并添加到列表中,另一个用来刷新ListView控件的数据。在计算数据时我们使用了lock保护dataList,确保数据的线程安全性。在刷新ListView时也同样使用了lock来避免多线程访问导致的并发问题。

请注意,这个示例中使用了Thread.Sleep(1000);来模拟每隔一秒刷新一次ListView的操作。在实际应用中,您可以根据具体需求来调整刷新频率。此外,为了在Windows窗体应用程序中运行,我们使用了Application.Run方法启动了主窗体。

相关推荐
卡提西亚8 分钟前
C++笔记-24-文件读写操作
开发语言·c++·笔记
snakecy19 分钟前
树莓派学习资料共享
大数据·开发语言·学习·系统架构
Nebula_g24 分钟前
C语言应用实例:学生管理系统1(指针、结构体综合应用,动态内存分配)
c语言·开发语言·学习·算法·基础
开心-开心急了36 分钟前
关于Flutter与Qt for python 的一些技术、开源、商用等问题
开发语言·python·qt·flutter
友友马38 分钟前
『 QT 』按钮类控件属性解析
开发语言·数据库·qt
Evand J40 分钟前
【MATLAB例程】基于噪声协方差自适应的互补滤波器方法vs标准互补滤波,用于融合加速度计和陀螺仪数据,估计角度
开发语言·matlab
熊小猿1 小时前
RabbitMQ死信交换机与延迟队列:原理、实现与最佳实践
开发语言·后端·ruby
星释1 小时前
Rust 练习册 :Pig Latin与语言游戏
游戏·rust·c#
2301_795167201 小时前
玩转Rust高级应用 如何让让运算符支持自定义类型,通过运算符重载的方式是针对自定义类型吗?
开发语言·后端·算法·安全·rust