Я использую анонимные каналы для отправки команд между двумя процессами. Обычно все отлично работает, но время от времени команда, полученная потребителем, усекается, и только половина ее проходит.AnonymousPipes - не получать все данные
Это, как я посылать команды:
AnonymousPipeServerStream pipeServer = new AnonymousPipeServerStream(PipeDirection.Out, HandleInheritability.Inheritable);
StreamWriterpipeWriter = new StreamWriter(this.pipeServer) { AutoFlush = true };
pipeWriter.WriteLine(command);
и это, как я прочитал их:
AnonymousPipeClientStream pipeClient = new AnonymousPipeClientStream(PipeDirection.In, pipeId);
StreamReader pipeReader = new StreamReader(this.pipeClient);
string command = pipeReader.ReadLine();
Команда на самом деле небольшой base64 преобразованный PDF-файл с некоторыми дополнительными данными. Команда, написанная в pipeWriter, имеет правильную форму (по крайней мере, журналы говорят нам об этом), а команда, полученная потребителем, обычно в порядке. Затем время от времени это не так и по какой-то причине потребитель получает только часть его.
Когда мы попытаемся отправить ту же команду снова, она пройдет. Отправка команды снова приведет к уничтожению старого потребителя, но продюсер останется прежним.
Есть ли какая-либо известная причина возникновения этой ситуации? Мне что-то не хватает?
Отличный ответ. Спасибо! – wade