Referencias de mensajes en la forma Asignación de mensajes
La primera vez que se asigna un objeto basado en .NET a un mensaje o a una parte de mensaje, ese mensaje contiene y mantiene una referencia al objeto.
Para mejorar la eficacia y la escalabilidad, el motor de orquestación no realiza una "copia profunda" del objeto: es decir, no copia todo el contenido del objeto en el mensaje.
Posteriormente, si asigna el objeto a otro mensaje o a otra parte de mensaje, todas las modificaciones que haya realizado en el original también se realizarán en el segundo mensaje o segunda parte de mensaje. Debería evitar esta situación, ya que los resultados son impredecibles.
Si necesita que el segundo mensaje tenga una copia distinta del objeto, debería asignar el primer mensaje o primera parte de mensaje al segundo mensaje o segunda parte de mensaje.
Considere el ejemplo siguiente:
Erróneo:
myMsg1 = myObj; // assign the first message
myMsg2 = myObj; // assign the second message (wrong!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
En este caso, myMsg2.myInt se ha sobrescrito y ahora tiene el valor 5.
Correcto:
myMsg1 = myObj; // assign the first message
myMsg2 = myMsg1; // assign the second message (right!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
En este caso, myMsg2.myInt sigue teniendo el valor 100, como se esperaba.