Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何测试requestStream是否已关闭和释放_Vb.net - Fatal编程技术网

Vb.net 如何测试requestStream是否已关闭和释放

Vb.net 如何测试requestStream是否已关闭和释放,vb.net,Vb.net,如果发生异常,如何测试requestStream是否关闭并释放 Try Using requestStream As Stream = rqst.GetRequestStream() requestStream.Write(fle, 0, fle.Length) Throw New ApplicationException("Exception Occured") End Using Catch ex As Exception

如果发生异常,如何测试requestStream是否关闭并释放

Try
    Using requestStream As Stream = rqst.GetRequestStream()

        requestStream.Write(fle, 0, fle.Length)

        Throw New ApplicationException("Exception Occured")

    End Using


Catch ex As Exception

    MessageBox.Show(ex.Message.ToString())

Finally
    'test if the requeststream is closed and disposed?
    MessageBox.Show("")

End Try

这就是
使用
所做的。即使出现异常,
使用
也会导致编译器烘焙一个
finally
子句,该子句将调用
Dispose


无需再做一次。

这就是
使用的功能。即使出现异常,
使用
也会导致编译器烘焙一个
finally
子句,该子句将调用
Dispose


无需再次执行。

我尝试使用一些模拟和伪实现来解决这个问题,但流基类对此并不友好。 最后,我在单元测试中使用了与spender建议的完全相同的原则(C#used)解决了这个问题:

stream.ReadByte();导致异常

在SystemWrapper的帮助下,可能存在一种更干净的方式,请参见


HTH

我尝试使用一些模拟和伪实现来解决这个问题,但流基类对此并不友好。 最后,我在单元测试中使用了与spender建议的完全相同的原则(C#used)解决了这个问题:

stream.ReadByte();导致异常

在SystemWrapper的帮助下,可能存在一种更干净的方式,请参见


HTH

谢谢,可以测试吗?我被告知实现idispose,但不确定如何实现?在
IDisposable
上没有
Disposed
属性,所以可能没有,尽管您可以在
结束使用后在
requestStream
上尝试一些操作,并确保它们抛出
ObjectDisposedException
。是的,Using语句有它自己的范围。谢谢,可以测试吗?我被告知实现idispose,但不确定如何实现?在
IDisposable
上没有
Disposed
属性,所以可能没有,尽管您可以在
结束使用后在
requestStream
上尝试一些操作,并确保它们抛出
ObjectDisposedException
。是的,Using语句有它自己的范围。
[TestMethod]
[ExpectedException(typeof(ObjectDisposedException))]
public void When_EmailResource_gets_disposed_Should_dispose_ContentStream()
{
    var stream = new System.IO.MemoryStream();

    var resource = new EmailResource
    {
        ContentStream = stream,
    };

    resource.Dispose();

    stream.ReadByte();
}