AmazonCloudWatchLogsClient异步方法失败,没有错误

时间:2017-10-19 21:14:14

标签: c# .net asynchronous aws-sdk amazon-cloudwatch

我尝试使用 AWS CloudWatch 库进行日志记录。 使用同步方法一切正常。但是,当我尝试使用相同方法的异步版本时,代码突然失败,没有抛出异常。这条线失败了:

await _amazonCloudWatchLogsClient.PutLogEventsAsync(request);

虽然这条线很好用:

_amazonCloudWatchLogsClient.PutLogEvents(request);

有趣的是,这条线也有效:

var result = _amazonCloudWatchLogsClient.PutLogEventsAsync(request).Result;

此时我不能想到回到同步方法之外的其他方法。同样,对于所有我尝试过的异步方法都是如此,而不是针对此特定方法。

1 个答案:

答案 0 :(得分:1)

显然,在调用异步方法时必须小心。调用链中的一个问题将导致问题。在我的例子中,3个函数在堆栈中起作用,一个方法是异步的,返回值为void。

public async void LogBatchThroughput

我正在使用同步方法调用此方法,就像常规方法一样。这导致最后一个异步方法被调用(PutLogEventsAsync)失败,静默。 我将之前的方法签名更改为:

public async Task LogBatchThroughput

并通过.GetAwaiter()。GetResult()从同步方法调用它。

这解决了这个问题。该问题与AWS Cloudwatch库没有任何关系。