0

このコードを使用して、ファイルに非同期で書き込みます

    public static void AsyncWrite(string file, string text)
    {
        try
        {
            byte[] data = Encoding.Unicode.GetBytes(text);                

            using ( FileStream fs = new FileStream(file, FileMode.Create,
                FileAccess.Write, FileShare.Read, 1, true))                                         
                    fs.BeginWrite(data, 0, data.Length, null, null);
        }            
        catch
        {

        }            
    }

何らかの理由で、Notepad ++は、期待どおりにテキストをファイルに書き込むのではなく、次の出力を表示することがあります。

ここに画像の説明を入力してください

4

1 に答える 1

2

BeginWriteは非同期であるため、using他のことが起こっている間にストリームがステートメントによって閉じられる可能性があります。

using非同期書き込みを行うときは使用しません。代わりに、適切なコールバック メソッドを作成し、そこでストリームを閉じます。これにより、推奨どおりに電話をかける機会も得られますEndWrite

于 2012-07-02T13:49:34.647 に答える