호출하는 동안 델리게이트에 null 매개 변수를 전달하려고하면 null 예외가 발생합니다. 문제는 라인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; } }
됩니다 : 다음은 코드가 어떻게 생겼는지의
변수 "사진"null의Invoke(d, new object[] { photo });
합니다. 호출하는 동안 null 매개 변수를 전달하는 올바른 방법은 무엇입니까? 감사합니다.
아마도 사진이 null이 아닌 경우에만 UpdatePhoto 메서드를 호출하면됩니까 ?? 나는 그것이 null 일 때 왜 호출해야하는지 알지 못합니다 ... –
@Tony, 답장을 보내 주셔서 감사합니다. 그렇습니다. 그러나 나는 아직도 이것을하기위한 최선의 방법을 알고 싶다. 내 프로그램 전체에서 비동기 호출을 사용하기 시작 했으므로 null을 전달해야하는 다른 시나리오에서이 호출이 다시 발생합니다. 아이디어가 있다면 지금 알려주세요. –
fyi. 나는 다음을 시도했지만 그것도 작동하지 않았다 : var d = new UpdatePhotoDelegate (UpdatePhoto); var parm = 새 개체 [1]; parm [0] = 사진; Invoke (d, parm); –