none
Google Api( Asp.Net MVC) RRS feed

  • Вопрос

  • public static async void AddDocument()
           {
               service.setUserCredentials(USERNAME, PASSWORD);
                //DocumentsService service = new DocumentsService("MyDocumentsListIntegration-v1");
               ClientLoginAuthenticator id = new ClientLoginAuthenticator(
       "bla", ServiceNames.Documents, service.Credentials);
              
    
          // Instantiate a DocumentEntry object to be inserted.
          DocumentEntry entry = new DocumentEntry();
           
    
          // Set the document title
          entry.Title.Text = "Change language";
    
          // Set the media source
          entry.MediaSource = new MediaFileSource(@"C:\Users\Andriy\Documents\Change language.docx", "application/msword");
    
          // Define the resumable upload link
          Uri createUploadUrl = new Uri("https://docs.google.com/feeds/upload/create-session/default/private/full");
          AtomLink link = new AtomLink(createUploadUrl.AbsoluteUri);
          link.Rel = ResumableUploader.CreateMediaRelation;
          entry.Links.Add(link);
           
          // Set the service to be used to parse the returned entry
          entry.Service = service;
    
          // Instantiate the ResumableUploader component.
          ResumableUploader uploader = new ResumableUploader();
    
          // Set the handlers for the completion and progress events
          uploader.AsyncOperationCompleted += new AsyncOperationCompletedEventHandler(OnDone);
          uploader.AsyncOperationProgress += new AsyncOperationProgressEventHandler(OnProgress);
    
     // Start the upload process
               uploader.InsertAsync(id, entry, new object());
             
    
        }
           static DocumentEntry entry;
        static  void OnDone(object sender, AsyncOperationCompletedEventArgs e) {
         entry    = e.Entry as DocumentEntry;
        }
        static int percentage = 0;
        static void OnProgress(object sender, AsyncOperationProgressEventArgs e)
        {
            percentage = e.ProgressPercentage;
        }
    как мне получить entry запустив етот метод?
    18 февраля 2014 г. 21:44

Ответы

  • А зачем его получать? Метод асинхронный и результат возвращает так:

    static DocumentEntry entry;
        static  void OnDone(object sender, AsyncOperationCompletedEventArgs e) {
         entry    = e.Entry as DocumentEntry;
        }

    Вы привели часть какого-то класса. Вот при успешном вызове метода

    AddDocument()

    вы получите в свойстве entry то что хотите.

    В асинхронных операциях забудьте про процедурный подход!

    Поясню - вы вызываете метод AddDocument, при этом свойство entry у вас еще = null. Далее у вас асинхронно происходит загрузка документа. При успешном завершении загрузки у вас свойство percentage будет = 100, и сработает метод OnDone, который присвоит свойству entry требуемое значение.


    20 февраля 2014 г. 0:20
  • тоисть мне написать так

    public static async Task<DocumentEntry> AddDocument()
           {
               service.setUserCredentials(USERNAME, PASSWORD);
                //DocumentsService service = new DocumentsService("MyDocumentsListIntegration-v1");
               ClientLoginAuthenticator id = new ClientLoginAuthenticator(
       "bla", ServiceNames.Documents, service.Credentials);
              
    
          // Instantiate a DocumentEntry object to be inserted.
          DocumentEntry entry = new DocumentEntry();
           
    
          // Set the document title
          entry.Title.Text = "Change language";
    
          // Set the media source
          entry.MediaSource = new MediaFileSource(@"C:\Users\Andriy\Documents\Change language.docx", "application/msword");
    
          // Define the resumable upload link
          Uri createUploadUrl = new Uri("https://docs.google.com/feeds/upload/create-session/default/private/full");
          AtomLink link = new AtomLink(createUploadUrl.AbsoluteUri);
          link.Rel = ResumableUploader.CreateMediaRelation;
          entry.Links.Add(link);
           
          // Set the service to be used to parse the returned entry
          entry.Service = service;
    
          // Instantiate the ResumableUploader component.
          ResumableUploader uploader = new ResumableUploader();
    
          // Set the handlers for the completion and progress events
          uploader.AsyncOperationCompleted += new AsyncOperationCompletedEventHandler(OnDone);
          uploader.AsyncOperationProgress += new AsyncOperationProgressEventHandler(OnProgress);
    
     // Start the upload process
               uploader.InsertAsync(id, entry, new object());
             return entry2;
    
        }
           static DocumentEntry entry2;
        static  void OnDone(object sender, AsyncOperationCompletedEventArgs e) {
         entry2    = e.Entry as DocumentEntry;
        }
        static int percentage = 0;
        static void OnProgress(object sender, AsyncOperationProgressEventArgs e)
        {
            percentage = e.ProgressPercentage;
        }
    
    public async Task<ActionResult> Getentry()
    {
    DocumentEntry my_entry = await AddDocument();
    return View(my_entry);
    }

    20 февраля 2014 г. 11:36

Все ответы

  • В смысле? Ничего не понятно
    19 февраля 2014 г. 4:58
  • Опишите подробней, что нужно, пока непонятно.

    Сделаем содержимое сообщества лучше, вместе!

    19 февраля 2014 г. 18:40
    Модератор
  • как получить static Document entry которое заполняется в методе OnDone?
    19 февраля 2014 г. 18:59
  • Получить где, в каком месте?

    Сделаем содержимое сообщества лучше, вместе!

    19 февраля 2014 г. 19:01
    Модератор
  • ну хочу так Document entry = await AddDocument();
    19 февраля 2014 г. 19:43
  • А зачем его получать? Метод асинхронный и результат возвращает так:

    static DocumentEntry entry;
        static  void OnDone(object sender, AsyncOperationCompletedEventArgs e) {
         entry    = e.Entry as DocumentEntry;
        }

    Вы привели часть какого-то класса. Вот при успешном вызове метода

    AddDocument()

    вы получите в свойстве entry то что хотите.

    В асинхронных операциях забудьте про процедурный подход!

    Поясню - вы вызываете метод AddDocument, при этом свойство entry у вас еще = null. Далее у вас асинхронно происходит загрузка документа. При успешном завершении загрузки у вас свойство percentage будет = 100, и сработает метод OnDone, который присвоит свойству entry требуемое значение.


    20 февраля 2014 г. 0:20
  • тоисть мне написать так

    public static async Task<DocumentEntry> AddDocument()
           {
               service.setUserCredentials(USERNAME, PASSWORD);
                //DocumentsService service = new DocumentsService("MyDocumentsListIntegration-v1");
               ClientLoginAuthenticator id = new ClientLoginAuthenticator(
       "bla", ServiceNames.Documents, service.Credentials);
              
    
          // Instantiate a DocumentEntry object to be inserted.
          DocumentEntry entry = new DocumentEntry();
           
    
          // Set the document title
          entry.Title.Text = "Change language";
    
          // Set the media source
          entry.MediaSource = new MediaFileSource(@"C:\Users\Andriy\Documents\Change language.docx", "application/msword");
    
          // Define the resumable upload link
          Uri createUploadUrl = new Uri("https://docs.google.com/feeds/upload/create-session/default/private/full");
          AtomLink link = new AtomLink(createUploadUrl.AbsoluteUri);
          link.Rel = ResumableUploader.CreateMediaRelation;
          entry.Links.Add(link);
           
          // Set the service to be used to parse the returned entry
          entry.Service = service;
    
          // Instantiate the ResumableUploader component.
          ResumableUploader uploader = new ResumableUploader();
    
          // Set the handlers for the completion and progress events
          uploader.AsyncOperationCompleted += new AsyncOperationCompletedEventHandler(OnDone);
          uploader.AsyncOperationProgress += new AsyncOperationProgressEventHandler(OnProgress);
    
     // Start the upload process
               uploader.InsertAsync(id, entry, new object());
             return entry2;
    
        }
           static DocumentEntry entry2;
        static  void OnDone(object sender, AsyncOperationCompletedEventArgs e) {
         entry2    = e.Entry as DocumentEntry;
        }
        static int percentage = 0;
        static void OnProgress(object sender, AsyncOperationProgressEventArgs e)
        {
            percentage = e.ProgressPercentage;
        }
    
    public async Task<ActionResult> Getentry()
    {
    DocumentEntry my_entry = await AddDocument();
    return View(my_entry);
    }

    20 февраля 2014 г. 11:36
  • я прав или нет?
    21 февраля 2014 г. 10:10
  • А код, то у вас работает? Если да, то значит правы.

    Сделаем содержимое сообщества лучше, вместе!

    22 февраля 2014 г. 7:33
    Модератор