我的问题类似于 C# Console App, slow to exit
但我能够在一定程度上孤立原因。
总结一下:我有一个控制台应用程序,可以执行sqlbulkcopy.writetoserver。 一切似乎都很好。数据全部插入到目标表中。处理传输数据的存储过程都按预期工作。
唯一的陌生是: 如果没有要写入的数据,则应用程序正常退出。 但是如果writetoserver确实写了一些东西 - 甚至是一行,那么应用程序需要花费非常长的时间才能退出(有时甚至更长一秒)。 换句话说,如果我在main方法结束之前有一个console.writeline,则会显示该消息,但在提示返回之前会有一秒钟的延迟。我无法想象这是预期的行为。
我有其他的控制台应用程序,其中使用SqlConnection.ClearAllPools(如其他问题所述)是解决方案。
但这次ClearAllPools没有任何区别。 在SQL连接字符串中将Pooling设置为true和false没有任何区别。 确保关闭sqlbulkcopy,关闭连接等, 我所做的一切都没有对这种奇怪的延迟产生影响。
我会很感激任何想法
答案 0 :(得分:0)
对此(类似)问题的回复之一:
Console app takes a long time to exit after finishing work
在main结束之前使用此代码可以消除不必要的延迟
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
我不明白为什么会这样,但我很感谢Yvette Colomb提出的建议