2016-04-13 46 views
1

我在使用ResumeAsync()方法時遇到了一些YouTube API問題。YouTube V3 API C# - ResumeAsync()操作已取消

這裏是我的代碼...

 YouTubeService youtube = await AuthService.AuthenticateYouTubeAsync(auth); 
     ResumableUpload<Video, Video> vidUploadReq = null; 

     var video = new Video(); 
     video.Snippet = new VideoSnippet(); 
     video.Snippet.Title = videoToUpload.Title; 
     video.Snippet.Description = videoToUpload.Description; 
     video.Snippet.Tags = videoToUpload.Tags; 
     video.Snippet.CategoryId = videoToUpload.CategoryID; 
     video.Status = new VideoStatus(); 
     video.Status.PrivacyStatus = videoToUpload.PrivacyStatus; 
     var filePath = videoToUpload.LocalFilePath; 

     // Get chunk size and make sure it's valid 
     int chunkSizeBytes = defaultChunkSizeKB * 1024; 

     using (var fileStream = new FileStream(filePath, FileMode.Open)) 
     { 
      vidUploadReq = youtube.Videos.Insert(video, "snippet,status", fileStream, "video/*"); 
      vidUploadReq.ProgressChanged += videoUploadRequest_ProgressChanged; 
      vidUploadReq.ResponseReceived += videoUploadRequest_ResponseReceived; 
      vidUploadReq.ChunkSize = chunkSizeBytes; 

      await vidUploadReq.UploadAsync(token); 
     } 

哪裏重新開始適應這個?

我是否希望在重新啓動應用程序時序列化ResumableUpload對象?

好像我需要保留UploadUri下次,下次設置UploadUri和StreamLength屬性。但是,這兩個字段在API中都是PRIVATE。

除了使用反射設置這些私有屬性以外,還有更好的方法嗎?

+0

檢查此SO問題[21321878](http://stackoverflow.com/questions/21321878/youtube-c-sharp-api-v3-how-do-you-resume-an-interrupted-upload)如果它可以幫助你:) – KENdi

+0

是的,我在發佈之前看過這個帖子。但是,它不回答我的問題。我的問題幾乎是「除了使用反射設置這些私有屬性以外,還有更好的方法嗎?」...您的鏈接提供了反射有效的示例。這根本不是解決這個問題的好方法。它破壞了O-O編程信息隱藏原理的目的。你現在看到了嗎? – Ginko

+0

鏈接'解決'問題,這是不是隱藏了這是一個問題的事實。 – Ginko

回答

1

隨着1.14版本中,谷歌API第3版.NET客戶端庫包含的能力來保存ResumableUpload會議期間UploadUri和以後使用UploadUri恢復上傳在程序的情況下,重新開始。

有在https://github.com/google/google-api-dotnet-client-samples 2個ResumableUpload示例說明與先前保存的UploadUri的一個附加的參數的使用.ResumeAsync的。一個UploadSessionData在上傳開始時調用的事件將UploadUri提供給客戶端程序,因此它可以將其保存到永久存儲器以便在程序重新啓動時進行檢索。