【发布时间】:2021-04-20 22:07:45
【问题描述】:
上下文 - 我正在使用 Azure CosmosDB GraphAPI - 天蓝色没有日志记录,可悲! 所以我们想出了使用我们自己的查询日志记录及其元属性
我实现了一个 Singleton 类,它被其他服务用于 DB 调用,我想着火并忘记对记录器的调用。
public class GraphDatabaseQuery : IGraphDatabaseQuery
{
private readonly GremlinClient gremlinClient;
public GraphDatabaseQuery()
{
if (gremlinClient == null)
{
gremlinClient = CosmosDbClient.Instance;
}
else
{
if (gremlinClient.NrConnections == 0)
{
gremlinClient = CosmosDbClient.Instance;
}
}
}
public async Task<ResultSet<dynamic>> SubmitQueryAsync(string query, string fullName)
{
var response = await gremlinClient.SubmitAsync<dynamic>(query);
_ = SendQueryAnalytics(response, query, fullName);
return response;
}
public async Task<dynamic> SubmitQueryWithSingleSingleResultAsync(string query, string fullName)
{
var response = await gremlinClient.SubmitWithSingleResultAsync<dynamic>(query);
return response;
}
private async Task<bool> SendQueryAnalytics(ResultSet<dynamic> response, string query, string fullName)
{
try
{
await new QueryAnalytics().pushData(response, query, fullName); // breakpoint here
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return true;
}
}
在startup.cs中
services.AddSingleton<IGraphDatabaseQuery, GraphDatabaseQuery>();
界面
public interface IGraphDatabaseQuery
{
public Task<ResultSet<dynamic>> SubmitQueryAsync(string query, string fullName);
public Task<dynamic> SubmitQueryWithSingleSingleResultAsync(string query, string fullName);
}
每当我测试它时,断点就会命中“SendQueryAnalytics”,但我假设那时调用函数的响应会被发回
这是因为我使用的是单例模式而不起作用吗?
【问题讨论】:
-
使用
Task.Run。
标签: c# .net-core async-await