0

Я использую google drive API в многопоточном приложении C#. Я хотел бы знать, является ли он Google dot net client library потокобезопасным или нет.Является ли google-диск api для C# -потока безопасным?

Кроме того, я хотел бы знать, что более правильно:

создать службу singelton или новую услугу каждый раз.

+0

Я думаю, что это вверх если ваш код является потокобезопасным или нет. – DaImTo

+0

Вы имеете в виду, что библиотека дискотек Google не позаботится об этом? И знаете ли вы, как я должен создать службу: один раз или для каждого запроса? Благодарю. – user3131889

+0

В вашем вопросе не упоминается клиентская библиотека Google .net. Только API Диска Google. – DaImTo

ответ

1

Если вы спрашиваете, является ли потолок Google .net client Library. Я уверен, что это так. Как минимум в одном месте документа указано, что он является потокобезопасным.

Google APIs Client Library for .NET

UserCredential является поточно-вспомогательным классом для использования маркера доступа для доступа к защищенным ресурсам. Маркер доступа обычно истекает после 1 час, после чего вы получите сообщение об ошибке, если попытаетесь его использовать.

+0

Я тоже это видел, но если он упоминается только там (я не мог найти больше мест), разве это не означает, что только это потокобезопасно? – user3131889

+0

Не думайте так, но я могу пинговать разработчика по проекту и узнать наверняка. Пожалуйста, прочитайте это http://stackoverflow.com/help/how-to-ask – DaImTo

+1

Основные классы библиотеки являются потокобезопасными, такими как Google.Apis.Requests.ClientServiceRequest, Google.Apis.Services.BaseClientService и Google.Apis. .Auth.OAuth2.UserCredential (как вы упомянули). Есть другие классы, которые не такие, как сами ресурсы. Таким образом, в отношении вашего вопроса, услуг и запросов реализованы как поточно-безопасные. Есть только одна проблема, о которой я знаю - https://code.google.com/p/google-api-dotnet-client/issues/detail?id=466, и основная проблема возникает, когда вы используете несколько MediaUpload в одно и то же время. – peleyal

0

Это не так. Я пробовал написать код, предполагая, что это так, и мой код иногда случайно разбивался на «request.Execute()» s ...

Я попытался использовать мьютекс, и поэтому только один поток использовал однопользовательскую службу в то время: это уменьшало сбои, но не устраняло их.

Оставив мьютекс в, я сменил его на singleton UserCredential и использовал новую услугу для каждого потока, и с тех пор он не разбился. (Я не знаю, нужны ли мне мьютексы больше или нет, но вызовы google go не являются критическим путем для моего приложения, мне просто нужно было получить вызовы из основного потока.)

 Смежные вопросы

  • Нет связанных вопросов^_^