Obtengo una excepción nula si trato de pasar un parámetro nulo a un delegado durante una invocación. Esto es lo que el código es el siguiente:¿Cómo invocar a un delegado con un parámetro nulo?
public void RequestPhoto() { WCF.Service.BeginGetUserPhoto(Contact.UserID, new AsyncCallback(RequestPhotoCB), null); } public void RequestPhotoCB(IAsyncResult result) { var photo = WCF.Service.EndGetUserPhoto(result); UpdatePhoto(photo); } public delegate void UpdatePhotoDelegate(Binary photo); public void UpdatePhoto(Binary photo) { if (InvokeRequired) { var d = new UpdatePhotoDelegate(UpdatePhoto); Invoke(d, new object[] { photo }); } else { var ms = new MemoryStream(photo.ToArray()); var bmp = new Bitmap(ms); pbPhoto.BackgroundImage = bmp; } }
El problema es con la línea:
Invoke(d, new object[] { photo });
Si la variable "foto" es nulo. ¿Cuál es la forma correcta de pasar un parámetro nulo durante una invocación? Gracias!
quizá sólo llame a su método de UpdatePhoto sólo cuando su foto no es nulo ?? No veo por qué tendrías que llamar cuando sea nulo ... –
@Tony, gracias por tu respuesta. Sí, eso funcionaría. Pero aún me gustaría saber la mejor manera de hacer esto. Ahora estoy empezando a utilizar llamadas asíncronas en todo mi programa, por lo que esto volverá a surgir en otros escenarios en los que necesitaría pasar un nulo. Déjame saber si tienes alguna idea. –
fyi. Intenté lo siguiente y tampoco funcionó: var d = new UpdatePhotoDelegate (UpdatePhoto); var parm = new object [1]; parm [0] = foto; Invocar (d, parm); –