设置 Stroke on Line 导致 Anti-Virus 停止编译

Setting Stroke on Line causing Anti-Virus to Stop Compilation

我正在做一个简单的家庭项目,它将在 canvas 上画线。我工作得很好,突然间,每次我尝试构建时,我的反病毒保护开始抛出警告消息。项目构建失败并出现错误:

Error Could not copy "obj\Debug\Mozieart.exe" to "bin\Debug\Mozieart.exe". Exceeded retry count of 10. Failed. Mozieart

我使用的是最新版本的 Norton 360(最新)。来自防病毒软件的警告提供了以下信息:

我不知道这是否重要,但我设法回溯并将其缩小到以下代码行:

private void RunMeshButton_Click(object sender, RoutedEventArgs e)
{
    TrizieartMesher mesher = new TrizieartMesher(new Rect(MainImage.RenderSize));

    EdgeCountText.Text = $"{mesher.Edges.Count()}";

    MainCanvas.Children.Clear();
    foreach (IMeshEdge edge in mesher.Edges)
    {
        Line edgeLine = new Line();
        edgeLine.X1 = edge.P1.X;
        edgeLine.Y1 = edge.P1.Y;
        edgeLine.X2 = edge.P2.X;
        edgeLine.Y2 = edge.P2.Y;

        //edgeLine.Stroke = Brushes.MediumOrchid;

        MainCanvas.Children.Add(edgeLine);
    }
}

当我注释掉 edgeLine.Stroke 行时,防病毒软件根本不会抱怨,但是一旦我取消注释该行,我就会收到防病毒警告,并且项目无法编译。

我还尝试使用 XAML 样式设置笔划,而不是在后面的代码中进行设置:

<Canvas Name="MainCanvas" Background="Transparent" AllowDrop="True">
    <!--<Canvas.Resources>
        <Style TargetType="Line">
            <Setter Property="Stroke" Value="MediumOrchid" />
            <Setter Property="StrokeThickness" Value="2.0" />
        </Style>
    </Canvas.Resources>-->
</Canvas>

一旦我取消对 Canvas 资源的注释,我就会收到防病毒警告并且项目无法构建。

也许是我多疑了,但我很担心这个。当我使用线条的 Stroke 属性 时,是否有人试图将病毒注入我的程序?

为了阻止防病毒软件检测到看起来像病毒的东西,我不得不稍微重构代码:

private void RunMeshButton_Click(object sender, RoutedEventArgs e)
{
    TrizieartMesher mesher = new TrizieartMesher(new Rect(MainImage.RenderSize));
    EdgeCountText.Text = $"{mesher.Edges.Count()}";

    MainCanvas.Children.Clear();
    List<Line> meshLines = mesher.Edges.Select(edge => CreateLine(edge.P1, edge.P2)).ToList();
    foreach (Line line in meshLines)
    {
        MainCanvas.Children.Add(line);
    }
}

private static Line CreateLine(Point p1, Point p2)
{
    Line newLine = new Line();
    newLine.X1 = p1.X;
    newLine.Y1 = p1.Y;
    newLine.X2 = p2.X;
    newLine.Y2 = p2.Y;

    newLine.Stroke = Brushes.MediumOrchid;

    return newLine;
}