Ich bekomme eine Null-Ausnahme, wenn ich versuche, während eines Aufrufs einen NULL-Parameter an einen Delegaten zu übergeben. Hier ist, was der Code wie folgt aussieht:Wie kann ein Delegat mit einem Null-Parameter aufgerufen werden?
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; } }
Das Problem mit der Leitung:
Invoke(d, new object[] { photo });
Wenn die Variable "Foto" null ist. Was ist der richtige Weg, um während eines Aufrufs einen Null-Parameter zu übergeben? Danke!
vielleicht rufen Sie nur Ihre UpdatePhoto-Methode nur, wenn Ihr Foto nicht null ist ?? Ich sehe nicht, warum du es nennen musst, wenn es null ist ... –
@Tony, danke für deine Antwort. Ja, das würde funktionieren. Aber ich würde immer noch gerne den besten Weg wissen, dies zu tun. Ich fange jetzt gerade an, Async-Aufrufe in meinem Programm zu verwenden, daher wird dies in anderen Szenarien, in denen ich eine Null übergeben müsste, wieder auftauchen. Lass Mek jetzt, wenn du irgendwelche Ideen hast. –
fyi. Ich habe folgendes versucht und es hat auch nicht funktioniert: var d = new UpdatePhotoDelegate (UpdatePhoto); var parm = neues Objekt [1]; parm [0] = Foto; Aufrufen (d, parm); –