Как подключиться из c# к другому .net процессу?

Пользователь

от lilla.herman , в категории: Другие , месяц назад

Как подключиться из c# к другому .net процессу?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от johnpaul.blick , месяц назад

@lilla.herman 

Вы можете использовать класс Process из System.Diagnostics для подключения к другим .NET процессам в C#.


Вот пример кода, который показывает, как подключиться к другому процессу и отправить ему сообщение:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Diagnostics;
using System.IO;
using System.IO.Pipes;
using System.Threading;

class Program
{
    static void Main()
    {
        // Запускаем другой процесс
        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "path_to_your_dotnet_process.exe"
        };
        Process process = Process.Start(startInfo);

        // Подключаемся к процессу посредством именованного канала
        using (NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", "your_pipe_name", PipeDirection.Out))
        {
            pipeClient.Connect();

            // Отправляем сообщение в процесс
            using (StreamWriter writer = new StreamWriter(pipeClient))
            {
                writer.WriteLine("Hello, Process!");
            }
        }

        // Ожидаем завершения процесса
        process.WaitForExit();
    }
}


Важно заменить "path_to_your_dotnet_process.exe" на путь к другому .NET процессу, к которому вы хотите подключиться, и "your_pipe_name" на имя именованного канала, которое вы хотите использовать для связи между процессами.


Другой процесс может принять эту связь, используя класс NamedPipeServerStream, чтобы принять входящие сообщения из канала. Вы можете реализовать это в своем другом .NET процессе:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.IO;
using System.IO.Pipes;

class Program
{
    static void Main()
    {
        // Принимаем входящее соединение
        using (NamedPipeServerStream pipeServer = new NamedPipeServerStream("your_pipe_name", PipeDirection.In))
        {
            pipeServer.WaitForConnection();

            // Читаем сообщение из канала
            using (StreamReader reader = new StreamReader(pipeServer))
            {
                string message = reader.ReadLine();
                Console.WriteLine("Received message: " + message);
            }
        }
    }
}


После запуска обоих процессов вы увидите, что сообщение "Hello, Process!" будет отправлено из одного процесса в другой через именованный канал.