如果使用sqlbulkcopy.writetoserver,则控制台应用程序退出很慢

时间:2018-02-07 15:59:29

标签: c# .net sql-server

我的问题类似于 C# Console App, slow to exit

但我能够在一定程度上孤立原因。

总结一下:我有一个控制台应用程序,可以执行sqlbulkcopy.writetoserver。 一切似乎都很好。数据全部插入到目标表中。处理传输数据的存储过程都按预期工作。

唯一的陌生是: 如果没有要写入的数据,则应用程序正常退出。 但是如果writetoserver确实写了一些东西 - 甚至是一行,那么应用程序需要花费非常长的时间才能退出(有时甚至更长一秒)。 换句话说,如果我在main方法结束之前有一个console.writeline,则会显示该消息,但在提示返回之前会有一秒钟的延迟。我无法想象这是预期的行为。

我有其他的控制台应用程序,其中使用SqlConnection.ClearAllPools(如其他问题所述)是解决方案。

但这次ClearAllPools没有任何区别。 在SQL连接字符串中将Pooling设置为true和false没有任何区别。 确保关闭sqlbulkcopy,关闭连接等, 我所做的一切都没有对这种奇怪的延迟产生影响。

我会很感激任何想法

1 个答案:

答案 0 :(得分:0)

对此(类似)问题的回复之一:

Console app takes a long time to exit after finishing work

在main结束之前使用此代码可以消除不必要的延迟

    GC.Collect();
    GC.WaitForPendingFinalizers();
    GC.Collect();

我不明白为什么会这样,但我很感谢Yvette Colomb提出的建议