Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.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# 使用Azure瞬时故障处理重试策略访问已释放的关闭警告_C#_Azure_Resharper - Fatal编程技术网

C# 使用Azure瞬时故障处理重试策略访问已释放的关闭警告

C# 使用Azure瞬时故障处理重试策略访问已释放的关闭警告,c#,azure,resharper,C#,Azure,Resharper,我们有一个工作者角色,它根据查询结果处理记录并根据需要发送Azure服务总线消息,这基本上是一个队列处理服务。作为使用SQLAzure的最佳实践的一部分,我们使用重试策略包装了所有查询语句,该策略检测暂时性错误,并将根据定义的策略重试。请注意,我们实际上是从using语句中发送消息的,因此db变量没有“泄漏” 在using语句中,ReSharper抛出了“Access to Disposed Closure”警告,很可能是因为我们将DataContext作为重试策略的func参数传递 我的问题是

我们有一个工作者角色,它根据查询结果处理记录并根据需要发送Azure服务总线消息,这基本上是一个队列处理服务。作为使用SQLAzure的最佳实践的一部分,我们使用重试策略包装了所有查询语句,该策略检测暂时性错误,并将根据定义的策略重试。请注意,我们实际上是从using语句中发送消息的,因此db变量没有“泄漏”

在using语句中,ReSharper抛出了“Access to Disposed Closure”警告,很可能是因为我们将DataContext作为重试策略的func参数传递

我的问题是,我认为ReSharper没有正确地检测到这个模式,或者在我们如何编写这些函数以防止上面的警告时,有其他方法吗

代码

retryPolicy.ExecuteAction中的db变量是要标记的变量

补充资料


我还将这篇文章发布到ReSharper论坛上,面向更广泛的受众,这个特定的问题在那里得到了更详细的讨论。对于子孙后代,您可以找到

我猜您的执行会立即执行lamdba。然后,您应该使用ReSharper的属性[InstantHandle]注释ExecuteAction方法中的lambda参数

例如:

public void ExecuteAction([InstantHandle] Action action)
{
  ...
}

您可以导入JetBrains.Annotations.dll以获取此属性,也可以只复制项目中的所有属性。查看JetBrains网站和上的更多信息。

我猜您的执行操作会立即执行lamdba。然后,您应该使用ReSharper的属性[InstantHandle]注释ExecuteAction方法中的lambda参数

例如:

public void ExecuteAction([InstantHandle] Action action)
{
  ...
}

您可以导入JetBrains.Annotations.dll以获取此属性,也可以只复制项目中的所有属性。查看JetBrains网站上的更多信息和。

谢谢-事实上,它会立即返回,并且处理后的关闭不会有任何问题。我无法控制程序集添加[InstantHandle]属性。我将暂时禁止包含内联注释的消息。@如果您无权访问程序集,则可以添加外部注释。请看这里,谢谢-事实上,它确实会立即返回,并且处理的闭包不应该有任何问题。我无法控制程序集添加[InstantHandle]属性。我将暂时禁止包含内联注释的消息。@如果您无权访问程序集,则可以添加外部注释。看这里