C# remoting: Problem med objekt reference

Tags:    .net

Hej!

Jeg er ganske grøn i C#, og sidder nu med et sikkert ganske let problem.
Ud fra et par tutorials vedr. c# remoting har jeg lavet et meget simpelt program.
Problemet består i det objekt som serveren laver, og som klienten kan tilgå og kalde metoder i, ikke har nogen reference til serverens metoder.
Jeg ønsker f.eks. at kunne ændre et tekstfelt på serveren, fra klienten, ved hjælp af dette remote objekt. Men hvordan får jeg en server reference ind det objekt?


Dette er serveren:

class Server
{
private Form1 form;

public Server(Form1 form)
{
this.form = form;

}

public void StartListening()
{
form.richTextBox1.Text = "Server started...";
TcpChannel tcpChannel = new TcpChannel(9998);
ChannelServices.RegisterChannel(tcpChannel, false);
Type commonInterfaceType = Type.GetType("MovieTicket");
RemotingConfiguration.RegisterWellKnownServiceType(commonInterfaceType, "MovieTicketBooking", WellKnownObjectMode.SingleCall);
}

}


Og klienten:

class client
{
public client()
{
TcpChannel tcpChannel = new TcpChannel();
ChannelServices.RegisterChannel(tcpChannel, false);

Type requiredType = typeof(MovieTicketInterface);

MovieTicketInterface remoteObject = (MovieTicketInterface)Activator.GetObject(requiredType, "tcp://localhost:9998/MovieTicketBooking");
MessageBox.Show(remoteObject.GetTicketStatus());

}
}


Objekt interfacet:

public interface MovieTicketInterface
{
string GetTicketStatus(string stringToPrint);
void SetServerTextField(string text);
}

Og objektet:

public class MovieTicket : MarshalByRefObject, MovieTicketInterface
{
public string GetTicketStatus()
{
MessageBox.Show(stringToPrint);
string returnStatus = "Ticket Confirmed";
return returnStatus;
}

public void SetServerTextField(string text)
{
//Hvilken instans kan jeg referere til ?!
}
}

Jeg håber meget i kan hjælpe. Tusind tak :)



1 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Så vidt jeg lige kan gennemskue din kode, så er det ikke det objekt du sender der skal sætte dit tekstfeldt, det er din klient der skal gøre det

Dit MovieTicket objekt er kun en "bærer" af information, dvs det gør ingenting, det er din klient der i sin constructur skal sige:

MyTextField = remoteObjekt.GetTicketStatus();



t