Пример #1
0
        private static async Task StartHostAsync(
            ChromeMessageAction onMessage, ChromeErrorAction onError)
        {
            RegisterHost();

            // read initial message
            var args = Environment.GetCommandLineArgs();

            if (args.Length > 1 && args[1].StartsWith("chrome-extension://"))
            {
                try {
                    var msg = await ReadChromeMessageAsync(Console.OpenStandardInput());
                    await SendResponseAsync(true);

                    onMessage?.Invoke(msg);
                }
                catch (Exception ex) {
                    await SendResponseAsync(false);

                    onError?.Invoke(ex);
                }
            }

            // wait for additional messages sent from new App instances
            server = new NamedPipeServerStream(App.DomainName, PipeDirection.InOut);

            while (true)
            {
                await server.WaitForConnectionAsync();

                if (server == null)
                {
                    break;
                }

                if (server.IsConnected)
                {
                    try {
                        var msg = await ReadChromeMessageAsync(server);

                        onMessage?.Invoke(msg);
                    }
                    catch (Exception ex) {
                        onError?.Invoke(ex);
                    }

                    server.Disconnect();
                }
            }
        }
Пример #2
0
 public static void StartHost(ChromeMessageAction onMessage, ChromeErrorAction onError)
 {
     StartHostAsync(onMessage, onError);
 }