Никогда не использовал .Wait()
(или .Result
), особенно если это происходит из потока пользовательского интерфейса (или метода контроллера), так как это может привести к взаимоблокировке.
Измените свой метод на async Task<T>
.
Пример:
public async Task<Table> CreateTableIfNotExistsAsync()
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
var tableClient = storageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference("test");
await table.CreateIfNotExistsAsync();
return table;
}
Если нет способа превратить это в асинхронный код, тогда вы можете попробовать ConfigureAwait(false)
, но это будет работать, только если все, что вызывает этот метод и любой метод, который он вызывает, также использует его.
public Table CreateTableIfNotExists()
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
var tableClient = storageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference("test");
table.CreateIfNotExistsAsync().ConfigureAwait(false).GetAwaiter().GetResult();
return table;
}