【问题标题】:File.ReadAllText with a lambda-based retry wrapper on Try CatchFile.ReadAllText 在 Try Catch 上带有基于 lambda 的重试包装器
【发布时间】:2020-08-14 14:12:15
【问题描述】:

当我在加载 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));

谁能帮忙?

【问题讨论】:

    标签: c# try-catch


    【解决方案1】:

    你需要创建一个闭包。

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

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

    【讨论】:

      猜你喜欢
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多