gpt4 book ai didi

c# - 无法在 Windows 10 上创建新的 ConcurrentQueue

转载 作者:行者123 更新时间:2023-11-30 18:23:26 26 4
gpt4 key购买 nike

我正在尝试使用 HashLib library在 Windows 10 应用程序中,但它会引发未处理的异常 (System.MethodAccessException):

Attempt by method 'HashLib.Hash.TransformStream(System.IO.Stream, Int64)' to access method 'System.Collections.Concurrent.ConcurrentQueue`1..ctor()' failed.

没有进一步的信息。引发异常的确切行位于名为 Hash.cs 的 HashLib 源文件中。在第 380 行:

System.Collections.Concurrent.ConcurrentQueue<byte[]> queue = new System.Collections.Concurrent.ConcurrentQueue<byte[]>();

我找不到关于这个问题的任何线索on MSDN .我刚刚看到它甚至在可移植类库中也受支持,所以我认为它也应该在普通的 Windows 10 应用程序中工作。完全相同的代码已在 WPF 应用程序和 Windows 8.1 应用程序中成功使用和测试,没有任何问题。

最佳答案

解决方法是将stream转为byte[],问题解决。

    public static string MakeHashForFile(Stream fileStream)
{
//HashResult hashResult = hashImplementation.ComputeStream(fileStream);
byte[] bytes = GetBytesFromStream(fileStream);

HashResult hashResult = hashImplementation.ComputeBytes(bytes);

return hashResult.ToString().Replace("-", String.Empty).ToLowerInvariant();
}

private static byte[] GetBytesFromStream(Stream stream)
{
byte[] result;
using (MemoryStream reader = new MemoryStream())
{
stream.CopyTo(reader);
result = reader.ToArray();
}
return result;
}

关于c# - 无法在 Windows 10 上创建新的 ConcurrentQueue<byte[]>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32307602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com