0

FileSyncProviderがあり、 FullEnumerationSimpleSyncProviderのカスタム実装を作成しました。ファイルがFullEnumerationSimpleSyncProviderからFileSyncProviderに同期されると、ファイルは正しく作成されますが、ゼロバイトです。

他の方向(ソースとしてFileSyncProvider)で同期する場合、すべてが期待どおりに機能します。

これは私のIFileDataRetrieverの実装です。FileStreamプロパティのsetterとgetterにブレークポイントを設定しましたが、 StreamのSizeプロパティは常に正しく、ゼロになることはありません。実際のストリーム自体はMemoryStreamですが、問題が発生している可能性がありますか?

public class FileDataRetriever : IFileDataRetriever
{

    private System.IO.Stream fileStream;

    public string AbsoluteSourceFilePath
    {
        get
        {
            throw new NotImplementedException("AbsoluteSourceFilePath is not supported for this implementation of IFileDataRetriever");
        }
    }

    public FileData FileData { get; set; }

    public System.IO.Stream FileStream
    {
        get
        {
            return this.fileStream;
        }
        set
        {
            this.fileStream = value;
        }
    }

    public string RelativeDirectoryPath { get; set; }
}

アップデート:

実験として、以下のようにコードを変更すると、5バイトのファイルが作成されます。

    public System.IO.Stream FileStream
    {
        get
        {
            return new MemoryStream(new byte[] { 1, 2, 3, 4, 5 });
        }
        set
        {
            this.fileStream = value;
        }
    }

したがって、これは、MemoryStreamで正常に動作するはずであることを示しています。ゲッターにブレークポイントを設定すると、呼び出されたときに常に有効に見えます。サイズは0ではなく、正しいサイズなどです。

4

1 に答える 1

0

私はそれを持っている!私がする必要があるのは、ストリームの位置を0にリセットすることだけでした。それはストリームの最後にあったので、0バイトを書き込みました。

于 2010-07-26T16:43:44.280 に答える