代码之家  ›  专栏  ›  技术社区  ›  Led

C#parchive/quickpar/par2修复实现?

  •  9
  • Led  · 技术社区  · 15 年前

    对于C++,可以找到很多可以做到这一点的方法,但是对于C i,我找不到本机实现。

    一种选择是使用C++中的C++ DLL,

    另一个选项是在后台执行par2cmdline, 但我更愿意控制这个过程(进度,取消等等)。

    有人知道一个本机C#实现可以使用par2集修复文件吗?

    3 回复  |  直到 15 年前
        1
  •  1
  •   JasonRShaver    15 年前

    你想自己坚持自己的观点吗?我有一个完全本土的里德/所罗门暗示,我会张贴,如果它会帮助(匹配的基础是基于),但我没有任何东西的所有文件处理和解体。

    我的代码是Stream的一个实现,生成一个包含所有纠错数据的字符串。然后,您可以损坏该数据并将其发送回,it系统将自动恢复它。我只想把它寄出去,但它是 我也懒得写一篇博文链接到它。

    为了使这项工作像PAR一样,你必须把它分解成文件,然后构建一个系统,可以识别缺失的卷并“添加”所有缺失数据的损坏数据(数学不能处理丢失的数据,只会损坏)。

    另外,作为性能方面的一个注意事项,这个为其构建的系统相当“健壮”,它一次可以获得大量的10万个流,但也有很长时间的无所事事等待。C版的数学运算速度比纯C版快6%。如果我只使用不间断加载进行性能测试,则C的运行速度会慢1-2%。根据我的经验,大多数C到C的数学转换都有相同的性能结果。

        2
  •  0
  •   Neil Trodden    15 年前

    这不是一个直接的答案,但我认为有一种方法可以将32位dll加载到64位应用程序中:

    http://dnjonline.com/article.aspx?ID=jun07_access3264

    摘自文章:

    降低这些成本的一种可能方法是实现64位包装器的DLL,该DLL公开与原始32位DLL相同的函数、参数、类型等。然后,此包装器DLL可以对原始的32位DLL进行基于IPC的调用,该DLL已加载到代理进程中。

        3
  •  0
  •   Robert H.    15 年前

    我最后通过CreateProcess调用par2可执行文件。你可以控制stdin,stdout和strerr。因为可执行文件是一个控制台应用程序,所以您可以分析输出以获取进度。如果你想“取消”操作,你可以随时终止进程。

    “正确”的方法是使用PAR2源并将其传送到64位DLL(坚持使用非托管C/C++ +DLL作为性能原因)。

    推荐文章