C# Winforms图表导致单元测试暂停

C# Winforms图表导致单元测试暂停,c#,winforms,charts,C#,Winforms,Charts,我有很多单元测试,我注意到了一些不寻常的行为,特别是在另一个测试创建winforms图表后,异步调用似乎挂起。深入研究,我可以通过一个非常简单的设置来复制它。 复制该问题的代码如下所示 private async Task ADelay() { await Task.Delay(1000); } private void PlayWithChart() { var chart = new Chart(); var stream = new MemoryStream()

我有很多单元测试,我注意到了一些不寻常的行为,特别是在另一个测试创建winforms图表后,异步调用似乎挂起。深入研究,我可以通过一个非常简单的设置来复制它。 复制该问题的代码如下所示

private async Task ADelay()
{
    await Task.Delay(1000);
}

private void PlayWithChart()
{
    var chart = new Chart();

    var stream = new MemoryStream();
    chart.SaveImage(stream, ChartImageFormat.Jpeg);
    stream.Position = 0;

    chart.Dispose();
    stream.Dispose();
}

[Test]
public async Task Chart_example1()
{
    PlayWithChart();

    var astring = await ADelay().ContinueWith(e => "123");

    Assert.That(astring, Is.EqualTo("123"));
}
如果您运行上述测试,它将挂起测试中第二行的“wait”调用

但是,如果您注释掉“var chart=new chart();”和引用该图表的其他行,则测试可以顺利通过

因此,我假设与图表控件(来自winforms)的构造方式有关,也与线程上下文有关,从而导致此问题


有没有人遇到过这个问题,或者知道如何解决它?这是在单独的STA线程或类似的线程上创建图表的问题吗?

使用其他对象(例如位图)进行相同的memorystream保存是否有效?如果完全注释掉SaveImage()行,然后创建新图表(),甚至会导致相同的行为对象并在不接触itI的情况下对其进行处理。我无法在win10pro/64位上复制。