Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AmazonCloudWatchLogsClient异步方法失败,没有错误_C#_.net_Asynchronous_Aws Sdk_Amazon Cloudwatch - Fatal编程技术网

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

C# AmazonCloudWatchLogsClient异步方法失败,没有错误,c#,.net,asynchronous,aws-sdk,amazon-cloudwatch,C#,.net,Asynchronous,Aws Sdk,Amazon Cloudwatch,我正在尝试使用AWS CloudWatch库进行日志记录。 使用同步方法,一切都很好。但是,当我尝试使用相同方法的async版本时,代码突然失败,没有抛出异常。这条线出现故障: await _amazonCloudWatchLogsClient.PutLogEventsAsync(request); 虽然这条线很好用: _amazonCloudWatchLogsClient.PutLogEvents(request); 有趣的是,这一行也适用: var result = _amazonClo

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

await _amazonCloudWatchLogsClient.PutLogEventsAsync(request);
虽然这条线很好用:

_amazonCloudWatchLogsClient.PutLogEvents(request);
有趣的是,这一行也适用:

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

在这一点上,我想不出除了回到同步方法之外的其他方法。同样,这适用于我尝试过的所有异步方法,而不是这个特定方法。

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

public async void LogBatchThroughput
我调用这个方法就像从同步方法调用常规方法一样。这导致最后一个被调用的异步方法(PutLogEventsAsync)以静默方式失败。 我将以前的方法签名更改为:

public async Task LogBatchThroughput
并通过.GetAwaiter().GetResult()从同步方法调用它

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