如果我在调用过程中尝试传递一个空参数给委托,我得到一个空例外。下面的代码看起来像什么:如何使用null参数调用委托?
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; } }
问题与行:
Invoke(d, new object[] { photo });
如果变量“照片”为空。在调用过程中传递null参数的正确方法是什么? 谢谢!
也许只有当您的照片不为空时才会调用UpdatePhoto方法?我不明白为什么你需要在它为空时调用它... – 2010-06-01 21:23:56
@Tony,谢谢你的回复。是的,那会起作用。但我仍然想知道做到这一点的最佳方式。我现在只是开始在整个程序中使用异步调用,所以在其他需要传递null的场景中会再次出现这种情况。现在让我们来看看,如果你有任何想法。 – 2010-06-01 21:27:59
fyi。我尝试了以下方法,但它也不起作用: var d = new UpdatePhotoDelegate(UpdatePhoto); var parm = new object [1]; parm [0] = photo; 调用(d,parm); – 2010-06-01 21:29:02