• Domingo 22 de Diciembre de 2024, 15:27

Autor Tema:  webmethod trabaja con copia local ERRONEAMENTE  (Leído 867 veces)

marilia15

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
webmethod trabaja con copia local ERRONEAMENTE
« en: Miércoles 9 de Septiembre de 2009, 19:04 »
0
Hola chicos, antes de nada muchas gracias por atenderme.

Tengo un problema tengo un webservice con un atributo vector.
El cliente llama al servidor del siguiente modo:
    servidor = new HotelServidor.Service();
    servidor.inicializar();
    servidor.prueba();

El metodo inicializar modifica los valores del vector, y compruebo que lo rellena correctamente. Ademas desde dentro del metodo inicializar, se llama al metodo prueba antes de terminar. El metodo prueba me dice si se ha modificado el vector, o sigue a nulo.

El resultado es el siguiente:
cliente llama metodo inicializar:  modifica el vector y llama a prueba Y me dice que el vector no es nul.
despues el cliente llama a prueba: y dice que el vector si es nul.

deduzco que inicializar está trabajando con su copia local, ¡y no es el objetivo!
aQUI dejo el codigo del servidor:
   public class Service : System.Web.Services.WebService
   {
    public static int numHab=25;
    public static int numHoras=10;
   public Habitacion[] habitaciones = new Habitacion[numHab];
   public Reunion[,] reuniones= new Reunion[numHab,numHoras];

   public Service () {
    }

[WebMethod]
    public void prueba()
    {
   StreamWriter writer2 = File.AppendText("tempVICKY.txt"); /********/
    writer2.WriteLine("prueba:");
   if (reuniones[0, 0] == null) writer2.WriteLine("reunion 0 nulo:");
   else writer2.WriteLine("reunion 0 inicializada");
   writer2.Close();
   }

[WebMethod]
   public void inicializar() {
   int i,j;
   for (i=0;i<numHab;i++){
      habitaciones=new Habitacion("Habitacion "+ i,i+10 );
      for(j=0;j<numHoras;j++){
          reuniones[i,j]=new Reunion();
       }
   }
   StreamWriter writer = File.AppendText("tempVICKY.txt"); /********/
    writer.WriteLine("toy inicializando");
   if (reuniones[0, 0] == null) writer.WriteLine("reunion 0 nulo");
   else writer.WriteLine("reunion 0 inicializada");
   writer.Close();
   prueba();
    }
}

¿Alquien puede decirme porque el metodo no modifica la variable global del vector?
Muchas gracias y un saludo.