.net remoting Повторный запуск клиента вызывает Exception
От: poison27  
Дата: 31.10.04 23:09
Оценка:
Помогите разобраться, пожалуйста:

Серверная часть написана в виде 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 или перезапустить серверную службу, то Клиент опять работает без исключений.

В чем может быть проблема?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.