private void UploadPhotosFromQueue()
        {
            Photo photo, uploaded_photo;

                        Monitor.Enter (photos_to_upload);
                        while (photos_to_upload.Count > 0) {
                                Monitor.Exit (photos_to_upload);

                                photo = photos_to_upload.Dequeue ();
                                MultipartData data = MultipartDataHelper.BuildMultipartData (photo);
                                string response = fotki.Request.PostMultipart (
                                                PhotoCollection.post_uri, data, true);
                                uint image_id = uint.Parse ((HttpUtility.ParseQueryString
                                                                (response)) ["image_id"]);
                                uploaded_photo = fotki.GetPhotos ().GetPhoto (image_id);
                                var args = new UploadPhotoCompletedEventArgs (
                                                uploaded_photo);
                                fotki.OnUploadPhotoCompleted (args);

                                Monitor.Enter (photos_to_upload);
                        }

                        Monitor.Exit (photos_to_upload);
        }
 internal void OnUploadPhotoCompleted(UploadPhotoCompletedEventArgs args)
 {
     if (UploadPhotoCompleted != null)
                         UploadPhotoCompleted (this, args);
 }