2013-11-21 4 views
1

Я создал проект C# WPF. У меня работает два exe, оба созданы мной. У одного exe есть окно, а другое нет.Общение между двумя C# exe

Теперь я хочу общаться с exe на другой. Я хочу отправить небольшое сообщение из exe (без окна) в другое.

Я действительно запутался об этом IPC в Windows, C#, кто может предложить мне что будет хорошо для этой проблемы

+1

Используйте WCF по названию трубы. – sthotakura

+0

@sthotakura. Не могли бы вы поделиться любыми ссылками или образцами. – user2431170

+8

@ user2431170 Не могли бы вы использовать поисковую систему? –

ответ

2

Вы не должны быть грубыми в комментариях.

Теперь попробуйте это:

На клиенте: создать на стороне клиента прокси с помощью следующих нескольких строк

// Create the proxy: 
EndpointAddress ep = new EndpointAddress("net.pipe://localhost/SomeAddress/PipeEndpoint/"); 
IMyinterface instance = ChannelFactory<IMyinterface>.CreateChannel(new NetNamedPipeBinding(), ep); 

// now use it: 
instance.SendMessage(); 

На стороне сервера, запустить сервер и зарегистрировать объект, чтобы сделать работу:

ServiceHost host = new ServiceHost(new MyClass(), new Uri("net.pipe://localhost/SomeAddress")); 
host.AddServiceEndpoint(typeof(IMyinterface), new NetNamedPipeBinding(), "PipeEndpoint"); 
host.Open(); 

MyClass код на стороне сервера тоже:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class MyClass : IMyinterface 
{ 

    public void SendMessage() 
    { 
     // do something here 
    } 

} 

И интерфейс должен быть в отдельном проекте referensed оба, проекты клиента и сервера:

[ServiceContract] 
interface IMyinterface 
{ 
    [OperationContract] 
    void SendMessage(); 
} 

Примечания: когда я говорю «Клиент», я имею в виду тот, кто посылает сообщение. Сервер получает сообщение. Я думаю, что в вашей архитектуре все наоборот, поэтому я хотел быть понятным с моей терминологией.

Надеюсь, это поможет

+0

Привет, Рами, я использовал тот же пример, который дал @sthotakura. Думаю, это тоже выглядит одинаково. Но я получаю EndPointNotFoundException. – user2431170

+0

Это сообщение, которое я получаю. Не было прослушивания конечной точки в net.pipe: // localhost/CommService /, который мог принять сообщение. – user2431170

+0

(1) проверьте правильность адресов. (2) Возможно, это проблема синхронизации, возможно, ваш клиент пытается получить доступ к серверу до того, как сервер откроет канал канала? –

Смежные вопросы