Как устанавливается ms.Position?меняется при чтении.
А _fileRequest точно подчищается
_fileRequest=null
я хз как еще отчистить.Может попробовать передавать _part по ссылке явно?не совсем понял.
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply
{
Message = "Тест"
});
}
using var serverStream = GreeterClient.SayHelloAsync(new HelloRequest());
var stream = await serverStream.ResponseAsync;
var result = stream.Message;
<H2>@testString<H2/>
и в нее из кода поместить "Тест " - то отображается нормально. Беда с вопросиками именно при получении из gRPC
2) Файл 100 мб съедает 1 гиг. Не сказал бы, что это чуть больше.
3) Отправляется через gRPC он понимает только bytes
По этому приходится конвертировать. По дефолту это делается так
Google.Protobuf.ByteString.CopyFrom(byte[])
Но это метод все время делает новую копию массива, по этому используется UnsafeWrap.
4)Если больше то происходит чтение в массив 3мб
await ms.ReadAsync(_part, 0, _part.Length);
А этот if просто что бы поймать остаток файла. Как только части по 3 мб кончатся и останется последний кусочек меньше 3 мб то для него создается новый массив размером с остаток и передается последняя часть файла.
5) как раз для этого и выделяется новый кусок и он меньше 3 мб, и он выделяется только 1 раз. Разве это утечка?