.net Azure CloudTable线程安全吗?

.net Azure CloudTable线程安全吗?,.net,azure,azure-storage,azure-table-storage,.net,Azure,Azure Storage,Azure Table Storage,我正在从不同的线程(ASP.NET应用程序)使用storage SDK 2.0写入Azure表存储 CloudTable对象是否线程安全?我可以只初始化CloudStorageAccount、CloudTableClient和CloudTable一次(例如,在静态构造函数中),然后在不同的线程中使用它们吗 还是每次都从空白处创建所有CloudStorageAccount、CloudTableClient和CloudTable对象更好(如中所示)?它是否以任何方式影响性能 每次对表执行操作时,获取

我正在从不同的线程(ASP.NET应用程序)使用storage SDK 2.0写入Azure表存储

CloudTable对象是否线程安全?我可以只初始化CloudStorageAccount、CloudTableClient和CloudTable一次(例如,在静态构造函数中),然后在不同的线程中使用它们吗

还是每次都从空白处创建所有CloudStorageAccount、CloudTableClient和CloudTable对象更好(如中所示)?它是否以任何方式影响性能

每次对表执行操作时,获取CloudTable实例的首选方法是什么?

此类型的任何公共静态(在Visual Basic中共享)成员都是 线程安全。不保证任何实例成员都是线程 安全的

此类型的任何公共静态(在Visual Basic中共享)成员都是 线程安全。不保证任何实例成员都是线程 安全的

  • 不幸的是,它们不是线程安全的
  • 幸运的是,这一点都不重要: 通信是基于HTTP的,这意味着没有连接被重用,每次应用程序只是创建一个新的HTTP连接。因此,只需重新创建每个线程的所有内容。我甚至在一个线程中进行了测试,为每个查询重新创建所有内容只需花费很少的成本

  • 那么,进行表请求的首选方式是什么?每次都创建所有对象?我认为这会因应用程序目标/设计的不同而有所不同,您可以选择重新创建和/或通过锁定使其线程安全。各有利弊。我怀疑是否有一条适用于所有人的规则(但我曾经是一名顾问:-)),请注意,如果您在不给GC清理连接的机会的情况下过度使用客户机,那么您将耗尽套接字。