Microsoft.Azure.Devices.Client.DeviceClient上的实例方法是否是线程安全的?例如,拥有一个DeviceClient实例并从多个线程同时执行其方法是否安全?
我们当前的代码库在同一实例上同时对UploadToBlobAsync(),UpdateReportedPropertiesAsync()和SendEventAsync()进行了多个并发调用。该文档完全没有提到线程安全,但是我想在重新编写当前代码库以手动阻止并发访问实例方法之前,确认这些方法是否是线程安全的。
答案 0 :(得分:1)
请参见Azure IoT Hub Device SDK Architecture (Csharp)
“应用程序使用DeviceClient
和ModuleClient
来代表两种类型的设备标识。这些对象内部由InternalClient
构建的同一ClientFactory
类表示。 “
Enable*Async
传输请求来处理回调API注册的线程安全方面。