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

用户3672014

我正在做一个项目,要求我对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一样,我的应用程序似乎崩溃。

罗希特·瓦茨

除非您通过其他线程上的Dispatcher(在WPF中)手动分派该方法,否则将从该线程调用的任何方法都将在调用线程上执行

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

在主线程上运行代码?

来自分类Dev

在主线程上运行代码?

来自分类Dev

Android服务的方法在不同的线程中调用。它仍然在主线程上运行吗?

来自分类Dev

Android服务的方法在不同的线程中调用。它仍然在主线程上运行吗?

来自分类Dev

NSURLSession dataTaskWithRequest完成块是否始终在主线程上运行?

来自分类Dev

在主线程上运行回调

来自分类Dev

ObserveOn与修改代码以在主线程上运行

来自分类Dev

如何从任务在主线程上运行语句

来自分类Dev

运行主线程的自定义方法

来自分类Dev

在本机线程上在主线程上运行快速代码

来自分类Dev

在Android,主线程或单独线程上使用Accelerometer的最佳实践?

来自分类Dev

从主线程调用方法-UnityEngine C#

来自分类Dev

是否可以在c中同时运行主线程及其子线程

来自分类Dev

在c#5.0中,“异步/等待”功能是否始终在运行开始时在主线程上运行

来自分类Dev

在c#5.0中,“ async / await”函数是否始终在运行开始时在主线程上运行

来自分类Dev

如何确定我们是否在主线程中运行?

来自分类Dev

asynctask是否不与主线程并行运行

来自分类Dev

asyncio是否支持从非主线程运行子进程?

来自分类Dev

Firebase signInWithEmail函数是否在主线程中运行?

来自分类Dev

“仅在主线程上运行”例外是仅模拟器

来自分类Dev

为什么我的NSOperationQueue在主线程上运行?

来自分类Dev

为什么UIWebView的AVPlayerViewController不在主线程上运行?

来自分类Dev

在主线程上运行NSURLSession完成处理程序

来自分类Dev

为什么CompletableFuture的thenAccept()无法在主线程上运行

来自分类Dev

'NSInternalInconsistencyException',原因:“仅在主线程上运行!” 错误

来自分类Dev

为什么我的代码在主线程上运行?

来自分类Dev

哪些代码将在浏览器的主线程上运行?

来自分类Dev

为什么我的代码在主线程上运行?

Related 相关文章

  1. 1

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

  2. 2

    在主线程上运行代码?

  3. 3

    在主线程上运行代码?

  4. 4

    Android服务的方法在不同的线程中调用。它仍然在主线程上运行吗?

  5. 5

    Android服务的方法在不同的线程中调用。它仍然在主线程上运行吗?

  6. 6

    NSURLSession dataTaskWithRequest完成块是否始终在主线程上运行?

  7. 7

    在主线程上运行回调

  8. 8

    ObserveOn与修改代码以在主线程上运行

  9. 9

    如何从任务在主线程上运行语句

  10. 10

    运行主线程的自定义方法

  11. 11

    在本机线程上在主线程上运行快速代码

  12. 12

    在Android,主线程或单独线程上使用Accelerometer的最佳实践?

  13. 13

    从主线程调用方法-UnityEngine C#

  14. 14

    是否可以在c中同时运行主线程及其子线程

  15. 15

    在c#5.0中,“异步/等待”功能是否始终在运行开始时在主线程上运行

  16. 16

    在c#5.0中,“ async / await”函数是否始终在运行开始时在主线程上运行

  17. 17

    如何确定我们是否在主线程中运行?

  18. 18

    asynctask是否不与主线程并行运行

  19. 19

    asyncio是否支持从非主线程运行子进程?

  20. 20

    Firebase signInWithEmail函数是否在主线程中运行?

  21. 21

    “仅在主线程上运行”例外是仅模拟器

  22. 22

    为什么我的NSOperationQueue在主线程上运行?

  23. 23

    为什么UIWebView的AVPlayerViewController不在主线程上运行?

  24. 24

    在主线程上运行NSURLSession完成处理程序

  25. 25

    为什么CompletableFuture的thenAccept()无法在主线程上运行

  26. 26

    'NSInternalInconsistencyException',原因:“仅在主线程上运行!” 错误

  27. 27

    为什么我的代码在主线程上运行?

  28. 28

    哪些代码将在浏览器的主线程上运行?

  29. 29

    为什么我的代码在主线程上运行?

热门标签

归档