// retry one row.The userstate was removed from the retry queue before that call
        private bool RetryRow(UserState us)
        {
            if (us != null)
            {
                Trace.Indent();
                Trace.TraceInformation("Retrying a row, current position is: " + us.CurrentPosition + "for uri: " + us.ResumeUri);
                Trace.Unindent();
                if (us.CurrentPosition > 0 && us.ResumeUri != null)
                {
                    string          contentType = MediaFileSource.GetContentTypeForFileName(us.Row.Cells[COLUMNINDEX_FILENAME].Value.ToString());
                    MediaFileSource mfs         = new MediaFileSource(us.Row.Cells[COLUMNINDEX_FILENAME].Value.ToString(), contentType);

                    Stream s = mfs.Data;

                    s.Seek(us.CurrentPosition, SeekOrigin.Begin);


                    lock (this.flag)
                    {
                        this.queue.Add(us);
                    }
                    us.Row.Cells[COLUMNINDEX_STATUS].Value = "Retrying (" + us.RetryCounter + ") - Last error was: " + us.Error;
                    ru.ResumeAsync(this.youTubeAuthenticator, us.ResumeUri, us.HttpVerb, s, contentType, us);

                    return(true);
                }

                // else treat this as a new one, a resume from null
                return(InsertVideo(us.Row, us.RetryCounter + 1));
            }
            return(false);
        }