Могу ли я регистрировать вызовы MS Insights в отдельном потоке? - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть консольное приложение, и я использую Microsoft Insights, но отправка события или исключения происходит медленно, поэтому я хочу отправить Insight в другой поток.

let worker = new Worker(__dirname + '/insights.js');
worker.on('message', (msg) => { 
                console.log("First value is: ", msg);

//in worker
let a = 10000000000;
while(a > 1){
    a--;
}
parentPort.postMessage(a);

Я пытаюсь использовать рабочий поток, но это не помогает мне , Они работают синхронно. Например, я создаю нового работника и запускаю l oop там

Могу ли я каким-то образом отправить событие в статистику параллельно и продолжить выполнение другого кода в это время?

1 Ответ

0 голосов
/ 18 февраля 2020

Я изменяю код в индексе. js, и теперь я использую следующее:

function sendLog(functionName, obj , commandName = ''){     
    const cp = require('child_process');
    const subprocess = cp.fork( __dirname + '/insights.js', [], {
        detached: true,
        stdio: [ 'ignore', 'ignore', 'ignore', 'ipc' ]
      });
    subprocess.send({function:functionName, obj: obj, commandName: commandName, UUID : uuid, scriptName: roundCommand});
    subprocess.unref();
}

In Insights. js i trackEvent. Это нормально работает, я могу отправлять журналы в фоновом режиме. Но когда в моем индексе. js я выполняю команду, которая запускает, например, приложение C# консольное приложение, в котором я запускаю индекс. js файл создает новый процесс:

var process = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    RedirectStandardError = true,
                    FileName = "cmd.exe",
                    Arguments = $"/C {PathToCommand} {command} {arguments}",
                    WindowStyle = ProcessWindowStyle.Hidden,
                    RedirectStandardOutput = true,
                    UseShellExecute = false,
                    CreateNoWindow = true
                }
            };

основной процесс будет freez ... я не знаю почему, я отсоединяю все дочерние процессы .... может быть, что-то в том, как новый процесс выполняется из приложения C#, и в результате дочерний процесс не может отсоединиться от родительского .... я не т сейчас ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...