Muito lento para passar uma quantidade "grande" de dados da Extensão do Chrome para o Host (escrita em C #)

Estou usando o ChromeAPI de mensagens nativas passar o DOM de uma página para o meu host. Quando tento passar uma pequena sequência da minha extensão para o meu host, tudo funciona, mas quando tento passar o DOM inteiro (que não é tão grande ... apenas cerca de 260 KB), tudo fica muito mais lento e, eventualmente, recebo umNative host has exited error impedindo que o host responda.

Minha principal pergunta: Por que demora tanto para passar uma mensagem de 250 KB a 350 KB da extensão para o host?

De acordo comsite do desenvolvedor:

O Chrome inicia cada host de mensagens nativo em um processo separado e se comunica com ele usando a entrada padrão (stdin) e a saída padrão (stdout). O mesmo formato é usado para enviar mensagens em ambas as direções: cada mensagem é serializada usando JSON, codificado em UTF-8 e é precedida com comprimento de mensagem de 32 bits na ordem de bytes nativa. O tamanho máximo de uma única mensagem do host de mensagens nativo é de 1 MB, principalmente para proteger o Chrome de aplicativos nativos que se comportam mal.O tamanho máximo da mensagem enviada ao host de mensagens nativo é de 4 GB.

As páginas cujos DOMs estou interessado em enviar ao meu host não têm mais que 260 KB (e ocasionalmente 300 KB), bem abaixo do máximo imposto de 4 GB.

popup.js

document.addEventListener('DOMContentLoaded', function() {
    var downloadButton = document.getElementById('download_button');
    downloadButton.addEventListener('click', function() {
        chrome.tabs.query({currentWindow: true, active: true}, function (tabs) {
            chrome.tabs.executeScript(tabs[0].id, {file: "getDOM.js"}, function (data) {
                chrome.runtime.sendNativeMessage('com.google.example', {"text":data[0]}, function (response) {
                    if (chrome.runtime.lastError) {
                        console.log("Error: " + chrome.runtime.lastError.message);
                    } else {
                        console.log("Response: " + response);
                    }
                });
            });
        });
    });
});

host.exe

private static string StandardOutputStreamIn() {
    Stream stdin = new Console.OpenStandardInput();
    int length = 0;
    byte[] bytes = new byte[4];
    stdin.Read(bytes, 0, 4);
    length = System.BitConverter.ToInt32(bytes, 0);

    string = "";
    for (int i=0; i < length; i++)
        string += (char)stdin.ReadByte();

    return string;
}

Observe que eu encontrei o método acima emesta Pergunta, questão.

Por enquanto, estou apenas tentando escrever a string em um arquivo .txt:

public void Main(String[] args) {
    string msg = OpenStandardStreamIn();
    System.IO.File.WriteAllText(@"path_to_file.txt", msg);
}
A gravação da sequência no arquivo leva muito tempo (~ 4 segundos e às vezes até 10 segundos).A quantidade de texto realmente escrita varia, mas nunca é mais do que apenas a declaração do documento principal e algumas tags de comentário do IE. Todo o texto agora aparece.Esse arquivo com quase nenhum texto tem 649 KB, mas o documento real deve ter apenas 205 KB (quando eu o baixar). O arquivo ainda é um pouco maior do que deveria (216 KB quando deveria ser 205 KB).

Eu testei meugetDOM.js função apenas baixando o arquivo, e todo o processo é quase instantâneo.

Não sei por que esse processo está demorando tanto, por que o arquivo é tão grande ou por que quase nenhuma mensagem está sendo enviada.

Não tenho certeza se isso tem algo a ver com desserializar a mensagem de uma maneira específica, se devo criar uma porta em vez de usar ochrome.runtime.sendNativeMessage(...); método, ou se houver algo totalmente diferente que eu estou perdendo.

Toda a ajuda é muito apreciada! Obrigado!

EDITAR

Embora minha mensagem esteja enviando corretamente do ramal para o host, agora estou recebendo umNative host has exited error antes que o ramal receba a mensagem do host.

questionAnswers(1)

yourAnswerToTheQuestion