Правильное использование Yandex Disk API Client for .NET C#

352
19 июня 2018, 11:50

Хочу написать приложение для загрузки файлов на Яндекс.Диск с помощью C#. В Nuget нашел такую библиотеку: https://github.com/raidenyn/yandexdisk.client Установил ее, а также дополнительные библиотеки, которые для этого требовались. Кинул на форму кнопку и написал следующий код

private async void button1_Click(object sender, EventArgs e)
    {
        await Task.Run(UploadSample);
    }
    async Task UploadSample()
    {
        //You should have oauth token from Yandex Passport.
        //See https://tech.yandex.ru/oauth/
        string oauthToken = "Здесь мой токен";
        // Create a client instance
        IDiskApi diskApi = new DiskHttpApi(oauthToken);
        //Upload file from local
        await diskApi.Files.UploadFileAsync(path: "1.txt",
                                            overwrite: false,
                                            localFile: @"D:\1.txt",
                                            cancellationToken: CancellationToken.None);
    }

Но возникла парочка вопросов:

1) Токен - это то, что указано в строке https://oauth.yandex.ru/client/****************************** и заменено на звездочки?

2)Объясните, пожалуйста, почему эту функцию необходимо выполнять таким вот образом, как я написал в обработчике кнопки. Первоначальное я просто писал UploadSample();, но студия предложила вариант с await Task.Run.

3)Как избавиться от ошибки "Программа не содержит статического метода "Main", подходящего для точки входа"

Answer 1
  1. Токен - читаем документацию.
  2. async/await - Все методы, которые могут долго обрабатываться (запрос к серверу например), лучше использовать асинхронно. Это позволит выполнять другие действия и не ждать выполнения текущего.
  3. Main - Вы удалили скорей всего стартовый метод. Создайте новое приложение и посмотрите, как выглядит внутри код. Обычно его вид следующий:

Console App:

static void Main(string[] args)
{
    /* */
}

WinForms App:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}
READ ALSO
Получить IMAGE_OPTIONAL_HEADER32 AddressOfEntryPoint из Assembly

Получить IMAGE_OPTIONAL_HEADER32 AddressOfEntryPoint из Assembly

Возможно ли такое на C#? Нужно получить этот параметр

279
Аналог RichTextBox в качестве логгера для WPF

Аналог RichTextBox в качестве логгера для WPF

Был проект на WinForms и в окне для вывода лога выполнения программы использовался RichTextBox со следующим кодом:

254
Запись и чтение из xml в dataGridView

Запись и чтение из xml в dataGridView

На форме (c# winforms vs2010) есть dataGridView1 и dataGridView2При запуске формы dataGridView1 заполняется из файла mdb

278