Помогите разобраться, пожалуйста:
Серверная часть написана в виде windows service:
//-----------server side code ------------------------------------------
public class TankController : MarshalByRefObject, ITankController
{
public event StatusChange ChangeMove;
public TankEventArgs EvArgs;
[OneWay]
public void MoveForward()
{
if(ChangeMove != null)
ChangeMove(EvArgs);
}
********************************
BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
IDictionary props = new Hashtable();
props["port"] = TcpPort;
ChannelServices.RegisterChannel(new TcpChannel(props,clientProv,serverProv));
RemotingConfiguration.RegisterWellKnownServiceType
(typeof(TankController),"TankController",WellKnownObjectMode.Singleton);
Клиент использует events:
//------------------client side code
BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = 0;
tcpChannel = new TcpChannel(props, null,provider);
ChannelServices.RegisterChannel(tcpChannel);
Tank = (TankInterface.ITankController)Activator.GetObject(typeof(TankInterface.ITankController), URI);
Tank.ChangeMove += new TankInterface.StatusChange(this.OnChangeMove);
private void btnMoveForward_Click(object sender, System.EventArgs e)
{
Tank.MoveForward();
}
public void OnChangeMove (TankEventArgs args)
{
MessageBox.Show("Event is ocurred!", "Huuray!");
}
При первом запуске Клиент работает нормально, однако если закрыть приложение, а затем заново открыть
появляется Exception на Tank.MoveForward();
System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it
Если подождать минут 10 или перезапустить серверную службу, то Клиент опять работает без исключений.
В чем может быть проблема?