这个让我难过。我甚至没有尝试连接数据库。当这段代码到达我实例化一个新的SqlConnection对象的行时,它就会挂起,而不是抛出异常或任何东西。我试过为2.0编译它。 3.5和4.0,他们都挂了。当然它也适用于我的机器和你的机器。但我试图在Windows Server 2008 x64服务器上运行此代码,它不会让步。
// example.cs
using System;
using System.Data;
using System.Data.SqlClient;
public class MainClass {
public static void Main(string[] args) {
Console.WriteLine("start");
SqlConnection conn = new SqlConnection(); // hangs here
Console.WriteLine("finish"); // never makes it here.
}
}
编译(2.0): c:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ csc.exe example.cs
答案 0 :(得分:6)
这可能是一个破碎的性能计数器,这是问题。我有这个问题,我使用Procmon来检测发生了什么。在加载性能监视器“.NET数据提供程序for SqlServer”的注册表项时,我的.NET应用程序被挂起了
我使用以下命令卸载计数器以使其正常工作:
unlodctr ".NET Data Provider for SqlServer"
答案 1 :(得分:2)
您的安装必须打破。代码并没有真正做任何重要的事情,所以没有理由挂在那里。
SqlConnection
构造函数执行此操作:
public SqlConnection() {
this.ObjectID = Interlocked.Increment(ref SqlConnection._objectTypeCount);
base();
GC.SuppressFinalize(this);
this._innerConnection = DbConnectionClosedNeverOpened.SingletonInstance;
}
因此,它会增加一个变量,将其复制到一个属性中,调用基本构造函数,从终结队列中删除该对象,然后复制一个引用。就是这样。
基础(DbConnection
)构造函数执行此操作:
protected DbConnection() {
}
因此,这里没有任何内容实际上与实际数据库连接有关。所有这些都是在您实际打开连接时完成的。
您的程序可能也会在第一次Console.WriteLine
调用后挂起,甚至无法创建SqlConnection
对象。
答案 2 :(得分:1)
建议2个步骤:
using
语句: public static void Main(string[] args) {
Console.WriteLine("start");
using (SqlConnection conn = new SqlConnection())
{
Console.WriteLine("middle");
}
Console.WriteLine("finish");
}
该计算机上的任何其他应用程序是否可以创建任何其他SqlConnection对象?
这显然是一个环境问题,因为您发布的代码可以在任何其他计算机上运行。怀疑它超出了一些临界点,using
将来有助于防范这种情况。
答案 3 :(得分:0)
我有同样的问题,它在我之后开始工作1.将目标框架从4.0更改为3.5,并且2.在Visual Studio中将调试设置更改为x64。
答案 4 :(得分:0)
升级多个nuget软件包后,我遇到了完全相同的问题。对我来说,解决方案是:
答案 5 :(得分:-2)
找到解决方案!我在很多个人电脑上遇到了同样的问题。框架4.5.2
在CMD中以管理员身份运行此命令:
unlodctr ".NET Data Provider for SqlServer"
您可能需要手动输入,因为复制意大利面不适用于引号。
来源:
http://askproblem.com/question/calling-new-sqlconnection-hangs-program/
我知道这个帖子已经老了,但也许其他人会收到这个错误。它的 可能是一个破碎的性能计数器,这是问题。我有这个问题 我用Procmon来检测发生了什么。我的.NET应用程序在加载性能监视器“.NET数据”的注册表项时出现了问题 SqlServer的提供程序“我使用以下命令卸载计数器 让它工作:C:Windowsinf> unlodctr“用于SqlServer的.NET数据提供程序”