После некоторого времени медитации мне удалось найти решение с помощью TcpListener & TcpClient.
Вот код, если кто-то пригодится (проверка на открытую копию приложения, передача данных и т. Д..можно изменить, такие методы у меня работают).
Запуск:
Process[] processes = Process.GetProcessesByName("ProcessName");
if (processes.Length > 1)
{
TcpClient client = new TcpClient();
client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
StreamWriter sw = new StreamWriter(client.GetStream());
sw.AutoFlush = true;
sw.WriteLine($"addsong:{path}");
client.Close();
Process.GetCurrentProcess().Kill();
}
else
{
var thread = new Thread(ListenerCallback);
thread.Start();
}
Поток Tcp Listener:
private void ListenerCallback()
{
TcpListener listner = new TcpListener(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
listner.Start();
while (true)
{
TcpClient client = listner.AcceptTcpClient();
StreamReader sr = new StreamReader(client.GetStream());
MessageBox.Show($"Recieved data: {sr.ReadLine()}");
client.Close();
Thread.Sleep(500);
}
}