gpt4 book ai didi

c# - 运行一个使用主线程方法的单独线程是否仍会在主线程上运行它? (C#)

转载 作者:行者123 更新时间:2023-12-03 13:19:57 29 4
gpt4 key购买 nike

我正在做一个项目,该项目需要我对 md5 校验和进行一些多任务处理。我创建了一个非常简单的方法来处理 md5 校验和,方法是创建一个新线程并使用一种允许我重用不同算法的方法。

这是我的新线程的代码:

private readonly Thread md5Check_ = new Thread(new ThreadStart(md5Check));

这是该线程的处理程序:
private static void md5Check()
{
string config_integrity = GetChecksum(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "/file.txt", Algorithms.MD5,).ToLower();

}

(这写在同一个 MainWindow.xaml.cs 文件中) 下面是 GetChecksum 方法:
public static string GetChecksum(string fileName, HashAlgorithm algorithm)
{
if (File.Exists(fileName))
{
using (var stream = new BufferedStream(File.OpenRead(fileName), 100000))
{
return BitConverter.ToString(algorithm.ComputeHash(stream)).Replace("-", string.Empty);
}
}
else
{
return "error";
}
}

算法:
 public static class Algorithms
{
public static readonly HashAlgorithm MD5 = new MD5CryptoServiceProvider();
public static readonly HashAlgorithm SHA1 = new SHA1Managed();
public static readonly HashAlgorithm SHA256 = new SHA256Managed();
public static readonly HashAlgorithm SHA384 = new SHA384Managed();
public static readonly HashAlgorithm SHA512 = new SHA512Managed();
public static readonly HashAlgorithm RIPEMD160 = new RIPEMD160Managed();
}

我想知道,既然新线程(md5Check_)在主线程上调用 getChecksum 方法,是否会在新线程(md5check)或主线程上计算实际计算,就好像文件是 1GB 或 2GB 我的应用程序可能会出现碰撞。

最佳答案

任意 从线程调用的方法将在调用线程上执行除非您通过 手动发送它调度程序(在 WPF 中)在其他线程上。

同样在您的情况下,您可以使用 Thread.CurrentThread 来验证自己。 GetChecksum() 方法中的属性以查看当前正在执行的线程。

关于c# - 运行一个使用主线程方法的单独线程是否仍会在主线程上运行它? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23851219/

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