DeviceClient方法是否是线程安全的?

时间:2020-10-08 21:01:42

标签: azure-iot-hub

Microsoft.Azure.Devices.Client.DeviceClient上的实例方法是否是线程安全的?例如,拥有一个DeviceClient实例并从多个线程同时执行其方法是否安全?

我们当前的代码库在同一实例上同时对UploadToBlobAsync(),UpdateReportedPropertiesAsync()和SendEventAsync()进行了多个并发调用。该文档完全没有提到线程安全,但是我想在重新编写当前代码库以手动阻止并发访问实例方法之前,确认这些方法是否是线程安全的。

1 个答案:

答案 0 :(得分:1)

请参见Azure IoT Hub Device SDK Architecture (Csharp)

enter image description here

“应用程序使用DeviceClientModuleClient来代表两种类型的设备标识。这些对象内部由InternalClient构建的同一ClientFactory类表示。 “

  • InternalClient通过转换为适当的Enable*Async传输请求来处理回调API注册的线程安全方面。