Tôi nhận được một ngoại lệ null nếu tôi cố gắng để vượt qua một tham số null cho một đại biểu trong một cuộc gọi. Đây là những gì mã trông giống như:Làm thế nào để gọi một đại biểu với một tham số 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; } }
Vấn đề là với các dòng:
Invoke(d, new object[] { photo });
Nếu biến "ảnh" là null. Cách chính xác để vượt qua một tham số null trong một lời gọi là gì? Cảm ơn!
có lẽ chỉ gọi phương thức UpdatePhoto của bạn khi ảnh của bạn không rỗng? Tôi không hiểu tại sao bạn cần phải gọi nó khi nó không có giá trị ... –
@Tony, cảm ơn câu trả lời của bạn. Vâng, điều đó sẽ hiệu quả. Nhưng tôi vẫn muốn biết cách tốt nhất để làm điều này. Tôi chỉ mới bắt đầu sử dụng các cuộc gọi không đồng bộ trong suốt chương trình của tôi, do đó, điều này sẽ xuất hiện trở lại trong các tình huống khác, nơi tôi sẽ cần phải vượt qua một null. Hãy cho tôi biệt nếu bạn có ý tưởng gì đó. –
fyi. Tôi đã thử những điều sau đây và nó không hoạt động: var d = UpdatePhotoDelegate mới (UpdatePhoto); var parm = đối tượng mới [1]; parm [0] = ảnh; Gọi (d, parm); –