几何尺寸与公差论坛

 找回密码
 注册
查看: 646|回复: 0

请用线程池处理上述代码

[复制链接]
发表于 2023-3-24 21:44:03 | 显示全部楼层 |阅读模式
var geometryGroup = new GeometryGroup();
int numThreads = Environment.ProcessorCount; // 使用处理器数量作为线程池大小
int currentIndex = 0;
int totalBumpDataCount = ThrdResultData.BumpDataList.Count;
var tasks = new List<Task>();

for (int i = 0; i < numThreads; i++)
{
    tasks.Add(Task.Run(() =>
    {
        while (true)
        {
            int index = Interlocked.Increment(ref currentIndex) - 1;
            if (index >= totalBumpDataCount)
            {
                break; // 所有数据处理完成后退出
            }
            var bumpData = ThrdResultData.BumpDataList[index];
            var point = new System.Windows.Point(bumpData.BumpPosX * scaleX, bumpData.BumpPosY * scaleY);
            var radiusX = 25 * scaleX;
            var radiusY = 25 * scaleY;
            var ellipseGeometry = new EllipseGeometry(point, radiusX, radiusY);

            lock (geometryGroup) // 线程安全地将几何形状添加到组中
            {
                geometryGroup.Children.Add(ellipseGeometry);
            }
        }
    }));
}

Task.WaitAll(tasks.ToArray()); // 等待所有线程完成

// 此时 geometryGroup 包含所有处理后的几何形状
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-4-29 00:12 , Processed in 0.079879 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表