gpt4 book ai didi

c# - 此 WPF 代码能否受益于 Parallel.For 以及如何受益?

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:51 24 4
gpt4 key购买 nike

我想知道是否有一种方法可以将其转换为更高性能例如,通过使用 Parallel.For。

public FrameworkElement FindIntersectingElement(Rect rectangle, UIElement activeElement)
{
foreach (var child in this.Children)
{
if (child != activeElement)
{
if (GetBounds(child as FrameworkElement, this).IntersectsWith(rectangle))
{
return child as FrameworkElement;
}
}
}

return null;
}

public Rect GetBounds(FrameworkElement of, FrameworkElement from)
{
GeneralTransform transform = null;

transform = of.TransformToVisual(from);

return transform.TransformBounds(new Rect(0, 0, of.ActualWidth, of.ActualHeight));
}

有什么建议吗?

最佳答案

我实际上并没有测试以下内容,所以使用风险自负(-:
我假设读取 ActualWidth/Height 是线程安全的。

   public FrameworkElement FindIntersectingElement(Rect rectangle, UIElement activeElement)
{
FrameworkElement found = null;

System.Threading.Tasks.Parallel.ForEach((IEnumerable<UIElement>)MainPanel.Children,
(child, loopState) =>
{
if (child != activeElement)
{
if (GetBounds(child as FrameworkElement, MainPanel).IntersectsWith(rectangle))
{
found = child as FrameworkElement;
loopState.Stop();
}
}
});
return found;
}

然后回答标题问题:您可能会看到一些加速,并且对于许多嵌套元素来说,这可能是值得的。这种(树搜索)是一种罕见的情况,您可能会看到比线性更好的改进。

关于c# - 此 WPF 代码能否受益于 Parallel.For 以及如何受益?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com