标签: using-statement

c#question - 是否有工具来确定我应该/可以使用"using"语句来确保资源关闭?

c#question - 是否有工具来确定我应该/可以使用"using"语句来确保资源关闭?(以避免内存泄漏等)

包括以下两种情况:

a)资源未被关闭

b)语法使用try-catch-finally和identies,这可以改为使用

谢谢

.net c# memory-management using-statement

5
推荐指数
1
解决办法
149
查看次数

使用陈述问题

我有两个问题.

1)您是否应始终在连接上使用using语句?那么,我会在连接上使用它,然后在连接中的读者上使用另一个?所以我将使用两个using语句.

2)假设您在连接上使用using语句,并且还在连接上返回读取器.所以你有两个使用语句.它会创建两个Try {} Finally {}块还是只创建一个?

谢谢!

.net c# using-statement

5
推荐指数
3
解决办法
591
查看次数

捕获在Using块的目标对象的构造函数中抛出的异常

using(SomeClass x = new SomeClass("c:/temp/test.txt"))
{
...
}
Run Code Online (Sandbox Code Playgroud)

在使用块内,一切正常,正常处理异常.但是如果构造函数SomeClass可以抛出异常呢?

c# exception-handling using-statement

5
推荐指数
2
解决办法
1985
查看次数

5
推荐指数
3
解决办法
2919
查看次数

导出类的命名空间的一部分

我有一个课程,包括enum:

class appearance{
  // ... stuff ...
  enum color {BLUE, RED, GREEN};
};
Run Code Online (Sandbox Code Playgroud)

我想附加部分命名空间(with using),以便我可以BLUE简单地引用as 的值BLUE,而不是appearance::BLUE.与此同时,我想保持enum在内class{},因为我认为这是最自然的.我曾尝试各种组合namespaceusing,但无济于事.

有什么建议 ???

c++ enums namespaces using-statement

5
推荐指数
1
解决办法
354
查看次数

"使用"语句中的异常,WCF未正确关闭连接.如何关闭故障WCF客户端连接或具有异常的连接?

关于关闭WCF连接的StackOverflow有几个问题,但排名最高的答案是指这个博客:

http://marcgravell.blogspot.com/2008/11/dontdontuse-using.html

当我在服务器上设置断点并让客户端挂起超过一分钟时,我遇到了这种技术的问题.(我故意创建超时异常)

问题是客户端似乎"挂起",直到服务器完成处理.我的猜测是,一切都在异常后被清理干净.

在考虑到TimeOutException它看来,retry()客户端的逻辑将继续一遍一遍重新提交查询到服务器,在那里我可以看到服务器端的调试器排队的请求,然后执行每一个排队的请求同时被.我的代码不希望WCF这样做,可能是我看到的数据损坏问题的原因.

有些东西并没有完全加入这个解决方案.

什么是在WCF代理中处理故障和异常的无所不包的现代方法?

c# wcf proxy exception using-statement

5
推荐指数
1
解决办法
2955
查看次数

为什么在using语句中声明的变量被视为只读?

为什么using变量被视为只读?它是c#语言规范还是托管语言规范?这是因为c#是.net语言?提前致谢.

注意:using变量是在using语句中出现的变量

示例代码:

using (Form s = new Form)
{
    myfunc(ref s);
}
Run Code Online (Sandbox Code Playgroud)

我们无法在使用块中更改using变量的值.代码会引发错误.

注意:我不想让你讨论readonly关键字.

.net c# using-statement object-lifetime

5
推荐指数
1
解决办法
1万
查看次数

与.Net Mail附件一起使用时,处置MemoryStream

我正在使用MemoryStream从存储在数据库中的二进制文件中添加附件。我的问题是我想正确处理MemoryStream。使用“ using”语句很容易做到这一点,但是当我有多个附件时,我不知道如何正确处理多个MemoryStream。

有没有很好的方法可以遍历并附加文件,但是同时正确处理了我要附加的MemoryStreams?当我尝试在使用smtp之前刷新/关闭时,通过错误发送它,指出流已经关闭。

任何建议,将不胜感激。

.net c# idisposable memorystream using-statement

5
推荐指数
2
解决办法
3000
查看次数

同一个使用块中的多个变量

我目前正在使用两个对象,如下所示:

using (var ms = new MemoryStream())
using (var bw = new BinaryWriter(ms))
{
    // work with ms and bw, both referenced here
}
Run Code Online (Sandbox Code Playgroud)

它工作"很好",实际上也是一个答案.但是,当我运行VS2012的代码分析工具时,我得到一个警告:

CA2202  Do not dispose objects multiple times   
Object 'ms' can be disposed more than once in method '<my method name>'. 
To avoid generating a System.ObjectDisposedException you should not 
call Dispose more than one time on an object.
Run Code Online (Sandbox Code Playgroud)

这让我相信可能有另一种方法来处理这种情况,但我不知道它是什么.

有谁知道在一个using块中以无警告方式使用两个对象的"正确"方法是什么?

c# dispose idisposable using using-statement

5
推荐指数
1
解决办法
1980
查看次数

为什么我不鼓励不止一次调用Dispose()?

这个问题描述了与CA2202相同的场景,如何解决这种情况,但它不是关于如何修复代码,而是关于为什么首先出现问题.

以下代码:

using (Stream stream = obtainStreamObject())
{
    using (var reader = new XmlTextReader(stream))
    {
        //do something with XmlTextReader
    }
}
Run Code Online (Sandbox Code Playgroud)

原因Stream.Dispose()叫两次.首先,内部using块会崩溃,这会调用XmlTextReader.Dispose()哪些调用Stream.Dispose().然后外部using块崩溃并Stream.Dispose()再次被调用.

所以,我必须换Streamusing,但不换行XmlTextReaderusing,尽管他们都实现IDisposable.

这会产生CA2202警告

不要多次处理对象对象'stream'可以在方法'MethodName(whatever)'中多次处理.为避免生成System.ObjectDisposedException,不应在对象上多次调用Dispose.

好吧,它说第二个Dispose()可能会屈服ObjectDisposedException.这有什么意义?为什么我会这样实现Dispose(),当它第二次被调用它会抛出异常而不是什么都不做?

.net c# code-analysis idisposable using-statement

5
推荐指数
0
解决办法
414
查看次数