【问题标题】:Best way to call multiple of methods in a thread在线程中调用多个方法的最佳方法
【发布时间】:2019-12-06 23:05:15
【问题描述】:

我正在寻找一种可以将多个方法调用添加到线程的解决方案。 一个普通的线程调用只能从一个方法调用开始,我想添加多个独立的方法调用。从一个线程调用可能有数千个方法,因此不可能为每个方法调用创建一个线程。例如,我想到了 10 个正在获取方法调用的线程。还是线程池是更好的方法?

这样的东西会很好:

Thread t1 = new Thread();
Thread t2 = new Thread();
t1.Add(DoWork(1));
t1.Add(DoWork(2));
t2.Add(DoWork(3));
t2.Add(DoWork(4));
t1.Start(); t2.Start();

【问题讨论】:

  • 也许,一个调用多个方法的新线程。
  • 如果方法调用是“独立的”,为什么它们需要由同一个线程执行?如果您只是想减少应用程序使用的线程数,请考虑改用线程池,并让方法调用分布在其中。
  • 我通常的建议是远离像线程和线程池这样的低级类,除非你有严重的理由。您应该看看更高级别的类,例如 Task、Parallel、PLINQ 或 BackgroundWorker。

标签: c# multithreading asynchronous


【解决方案1】:

用一个调用所有其他方法的方法启动线程。这可以通过使用anonymous function 来简化:

Thread t1 = new Thread(() => {
    DoWork(1);
    DoWork(2);
});

【讨论】:

    【解决方案2】:

    您可以创建一个调用所有这些方法的函数,然后将其传递给线程。但是如果可以的话,你真的应该避免使用原始线程。如果所有这些都只是需要执行的独立操作,为什么不将它们作为Tasks 运行呢?

    【讨论】:

      猜你喜欢
      • 2013-03-20
      • 2018-10-13
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 2016-12-21
      • 1970-01-01
      相关资源
      最近更新 更多