【问题标题】:Passing parameter between thread C# [duplicate]在线程C#之间传递参数[重复]
【发布时间】:2017-08-03 17:19:39
【问题描述】:

我有一个处理参数/值的常规多线程

  public void testThread (int fib)
  {
    int a = 1;
    int fib2 = fib + a;
    Console.WriteLine(" Thread : "+fib);
  }

如何将结果值传递回 MainThread 或另一个线程?

【问题讨论】:

  • 线程没有结果,虽然您可以设计来回传递数据的机制,但Task 更适合。
  • @Piotr 解决问题的方法真的很糟糕。
  • 谎言?递归多线程斐波那契 - 因为递归和多线程本身并不会导致足够的错误。

标签: c# multithreading


【解决方案1】:

您通常通过将数据写入某些共享数据结构来在线程之间传递数据,例如一个线程正在写入而另一个线程正在读取的队列。

但是,还有其他明确的方法。例如,如果您尝试从后台线程获取数据到 UI 线程,以便您可以使用该数据调用 UI API,那么有一些技术可以在其他线程上下文中执行代码。

例如,如果您知道与 UI 线程关联的 TaskScheduler,则可以使用 System.Threading.Tasks 中的 Task 类在 UI 线程上启动任务。当您的代码在 UI 线程上执行时,您可以从 TaskScheduler.FromCurrentSynchronizationContext() 中获取它,并将其保存在静态变量中以供以后使用。

【讨论】:

    猜你喜欢
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 2017-06-24
    • 1970-01-01
    • 2014-02-03
    • 2017-07-01
    • 2018-12-21
    相关资源
    最近更新 更多