Я хочу передать большие файлы через протокол TCP WCF, но я не знаю, какой метод следует использовать: буферизацию или потоковых.потока или буфера больших файлов в WCF
Я хочу асинхронно передавать файлы и показывать прогресс в управлении индикатором выполнения.
Поток выглядит лучше, потому что я понятия не имею, как организовать буфер в 4 Кб и читать/писать асинхронно с методом рекурсии. Должен ли я преобразовать этот метод возвращаемого типа в Task<Stream>
и назвать его?
private void test()
{
Stream _stream = new FileStream("D:\\123.avi", FileMode.Open);
using (FileStream fileStream = new FileStream("D:\\123\\123.avi", FileMode.Create))
{
_stream.CopyTo(fileStream);
}
}
UPDATE Хорошо, я сделал что-то вроде этого:
public Task<Stream> GetFileStream(string path)
{
Stream _stream = new FileStream(path, FileMode.Open);
var taskSource = new TaskCompletionSource<Stream>();
taskSource.SetResult(_stream);
return taskSource.Task;
}
void GetFile()
{
FileStream fileStream = new FileStream("D:\\123\\123.avi", FileMode.Create);
GetFileStream(@"D:\myFile.mkv").Result
.CopyTo(fileStream);
}
private void BtnButton_Click(object sender, RoutedEventArgs e)
{
Task task = new Task(() => { GetFile(); });
task.Start();
}
Что я должен сделать, чтобы связать этот процесс с ProgressBar?
Насколько велики ваши файлы? –
4 Гб и больше –