Это код для загрузки видео на Youtube с помощью C # .NET API из классического приложения Windows Forms:
YouTubeRequestSettings settings = new YouTubeRequestSettings("whatwill come here ?",
"my api key",
"my youtube login email", "my youtube login password");
YouTubeRequest request = new YouTubeRequest(settings);
Video newVideo = new Video();
newVideo.Title = "test 1";
newVideo.Tags.Add(new MediaCategory("Gaming", YouTubeNameTable.CategorySchema));
newVideo.Keywords = "test 1 , test 2";
newVideo.Description = "test 3 test 4";
newVideo.YouTubeEntry.Private = false;
newVideo.Tags.Add(new MediaCategory("tag 1, tag 2",
YouTubeNameTable.DeveloperTagSchema));
newVideo.YouTubeEntry.Location = new GeoRssWhere(37, -122);
newVideo.YouTubeEntry.MediaSource = new MediaFileSource("C:\\test.avi", "video/quicktime");
Video createdVideo = request.Upload(newVideo);
Это работает. Я ищу события, которые возвращают мне ход загрузки, поэтому я может отображать прогресс на индикаторе выполнения. Ich может зарегистрировать следующие события:
request.Service.AsyncOperationProgress +=
new AsyncOperationProgressEventHandler(Service_AsyncOperationProgress);
request.Service.AsyncOperationCompleted +=
new AsyncOperationCompletedEventHandler(Service_AsyncOperationCompleted);
... но они никогда не запускаются во время загрузки. Кроме того, я не могу найти никакой документации по .NET api, которая идет намного дальше, чем приведенный выше пример загрузки небольшого видео. Итак: это те события, которые стоит искать? Просто для справки, я запускаю, казалось бы, синхронную загрузку в следующем коде в фоновом потоке:
ThreadPool.QueueUserWorkItem(
delegate
{
try
{
createdVideo = request.Upload(newVideo);
} catch (Exception ex){
Invoke((ThreadStart) delegate{uploadingFailedWithException(ex);});
}
});
Invoke((ThreadStart)readyUploading);
Таким образом, я знаю, когда синхронная операция закончилась, но я бы хотел иметь события для обновления хода выполнения для пользователя. Есть идеи?