我可以using在使用括号中直接找到C#实例化的所有在线示例:
using (var cnx = new SqlConnection()) { }
Run Code Online (Sandbox Code Playgroud)
我认为以下应该采取相同的行动,但我似乎仍然锁定了资源:
SqlConnection GetConnection() { return new SqlConnection(); }
void foo()
{
using (var cnx = GetConnection()) { }
}
Run Code Online (Sandbox Code Playgroud)
当我单步执行我的程序并进入使用的右大括号后面的行时,我希望能够以任何方式使用SQL Server Management Studio更改数据库,但我不能.当我关闭我的应用程序时,错误消失了.
这不是隔离到SQL; 我也通过这种方式打开文件流来体验这一点.那就是:超越using块,但操作系统不允许外部应用程序更改文件.
我违反了using合同的某些部分吗?
使用返回适当资源的方法绝对没问题.特别是,这很常见:
using (var writer = File.CreateText(path))
{
}
Run Code Online (Sandbox Code Playgroud)
(和类似的方法File).
基本上,这与调用方法或调用构造函数无关 - 必定存在其他错误.如果你可以创建一个简短而完整的程序(使用文件而不是数据库理想情况下)证明了问题,那么我们很可能能够帮助你找出什么是问题,而不仅仅是什么是不:)
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |