在Try Catch上使用基于lambda的重试包装器的File.ReadAllText

时间:2020-08-14 14:12:15

标签: c# try-catch

当我在加载JSON文件时遇到“ IOException:共享违规”时,试图找到一种最合适的解决方案,因为它同时被另一个应用程序保存。

在加载时使用“ try Catch”,并进行某种形式的递归,尽管这很不合理。 因此,在搜索后遇到了此C#解决方案,该解决方案获得了很多好评 Cleanest way to write retry logic?

发生加载的实际函数调用是

 private static T LoadData<T>(string filePath)
    {
        return JsonUtility.FromJson<T>(File.ReadAllText(filePath));
    }

但是不确定如何使用上面的链接解决方案(Retry.Do)来实现,该解决方案似乎不允许在函数调用中传递参数,即

Retry.Do(SomeFunctionThatCanFail, TimeSpan.FromSeconds(1));

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您需要创建一个闭包。

最简单的方法是使用lambda表达式:

YourType data = Retry.Do(() => LoadData<YourType>("somefilepath"), TimeSpan.FromSeconds(1));
相关问题