以下の違いを無視:
日時:
2024/08/08 1:13:45 (2ヵ月前)
更新者:
hizuya@…
ログメッセージ:
  • Stream.Close 時に例外を無視する機能を追加。
ファイル:
1個の更新

凡例:

未変更
追加
削除
  • framework/trunk/CoreTest/Sources/IO/IOUtilityTest.cs

    r1575 r1655  
    679679 
    680680        /// <summary> 
     681        /// <see cref="IOUtility.CreateCloseExceptionIgnorableStream"/> をテストします。 
     682        /// </summary> 
     683        [Test] 
     684        public void TestCreateCloseExceptionIgnorableStream() 
     685        { 
     686            Action<bool, Action<Stream>> action = delegate(bool useWrapper, Action<Stream> callback) 
     687            { 
     688                using (MemoryStream rootStream = new MemoryStream()) 
     689                { 
     690                    Stream targetStream = new BufferedStream(rootStream, 0x1000); 
     691                    if (useWrapper) 
     692                    { 
     693                        targetStream = IOUtility.CreateCloseExceptionIgnorableStream(targetStream); 
     694                    } 
     695 
     696                    try 
     697                    { 
     698                        targetStream.WriteByte(1); 
     699                    } 
     700                    finally 
     701                    { 
     702                        // 元のストリームを破棄 
     703                        rootStream.Close(); 
     704 
     705                        // BufferedStream.Close() では書き込まれたデータがある場合 Flush() を呼ぶので例外が発生する 
     706                        callback(targetStream); 
     707                    } 
     708                } 
     709            }; 
     710 
     711            // Close() で例外が発生することを確認 
     712            action( 
     713                false, 
     714                delegate(Stream stream) 
     715                { 
     716                    Assert.That( 
     717                        stream.Close, 
     718                        Throws.TypeOf<ObjectDisposedException>(), 
     719                        "Normal close"); 
     720                }); 
     721 
     722            // Close() で例外が発生しないことを確認 
     723            action( 
     724                true, 
     725                delegate(Stream stream) 
     726                { 
     727                    stream.Close(); 
     728                }); 
     729        } 
     730 
     731        /// <summary> 
    681732        /// 再解析ポイントを作成します。 
    682733        /// </summary> 
詳しい使い方は TracChangeset を参照してください。