【问题标题】:console app slow to exit if sqlbulkcopy.writetoserver is used如果使用 sqlbulkcopy.writetoserver,控制台应用程序退出缓慢
【发布时间】:2018-07-17 23:57:46
【问题描述】:

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

但我已经能够在一定程度上隔离原因。

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

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

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

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

如果有任何想法,我将不胜感激

【问题讨论】:

  • 在调试器退出时暂停它,看看它在做什么。
  • 在 vs 2017 社区中,我在 main 的最后一条语句上放置了一个断点,但我似乎无法进入该点之后正在执行的内容。它只是说exe已经退出
  • 在调试器挂起时点击暂停

标签: c# .net sql-server


【解决方案1】:

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

Console app takes a long time to exit after finishing work

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-24
    • 2014-02-17
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 2018-12-07
    相关资源
    最近更新 更多