У меня есть FileSyncProvider , и я написал пользовательскую реализацию FullEnumerationSimpleSyncProvider .Когда файлы синхронизируются от FullEnumerationSimpleSyncProvider до FileSyncProvider , они создаются правильно, но имеют нулевые байты.
При синхронизации в другом направлении (FileSyncProvider в качестве источника) всеработает как положено.
Это моя IFileDataRetriever реализация.Я установил точки останова для установщика и получателя свойства FileStream , а свойство Size для Stream всегда корректно, а не ноль.Фактически Stream сам по себе является 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 в качестве размера.