Winforms图表导致单元测试失速

时间:2018-03-19 14:48:08

标签: c# winforms charts

我有一些单元测试,我注意到了一些不寻常的行为,特别是在另一个测试创建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"));
}

如果您运行上述测试,它将挂在" await"电话,测试中的第二行。

但是如果你注释掉" var chart = new Chart();"以及参考图表的其他行,然后测试通过。

所以我假设某些事情与Chart控件(来自winforms)的构造方式有关,使用线程上下文来解决这个问题。

有没有人遇到过这个或知道如何修复它?是在单独的STA线程上创建图表还是类似的东西?

0 个答案:

没有答案