Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用并行编程通过使用并行调用一次调用多个函数?_C#_Wpf - Fatal编程技术网

C# 如何使用并行编程通过使用并行调用一次调用多个函数?

C# 如何使用并行编程通过使用并行调用一次调用多个函数?,c#,wpf,C#,Wpf,我有一个像这样的WPF应用程序 namespace WpfApplication1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public delegate void NextPrimeDelegate(); int i = 0; public MainWindow() {

我有一个像这样的WPF应用程序

namespace WpfApplication1
{
 /// <summary>
/// Interaction logic for MainWindow.xaml
 /// </summary>
 public partial class MainWindow : Window
 {
public delegate void NextPrimeDelegate();
int i = 0;

public MainWindow()
{
  InitializeComponent();
}

 public void CheckNextNumber()
{
  i++;
  textBox1.Text= i.ToString();
    Dispatcher.BeginInvoke(
      System.Windows.Threading.DispatcherPriority.SystemIdle,
      new NextPrimeDelegate(this.CheckNextNumber));

 }

private void button1_Click(object sender, RoutedEventArgs e)
{
  Dispatcher.BeginInvoke(
      DispatcherPriority.Normal,
      new NextPrimeDelegate(CheckNextNumber));
  }
 }
tr[0].Start();
tr[0].Stop(); 

我无法将您附带的代码示例与您的问题联系起来,但我会回答您的问题
Parallel.Invoke()
将lambda(内联函数)的(可变长度)列表作为其参数。它并行调用/执行所有lambda,并阻止执行,直到所有lambda的执行完成。例如:

Parallel.Invoke( () => Thread.Sleep(500), () => Thread.Sleep(1500), () => Thread.Sleep(200));
这将同时调用所有这三个函数(
()=>…
是一个内联声明的函数,它不接受任何参数,并返回随后出现的单个表达式的结果。)和block(意味着执行将不会继续超过调用方线程上的该点)直到所有这三个函数都完成执行。在本例中,Parallel.Invoke将花费1500毫秒,因为运行时间最长的函数是第二个函数,它在返回之前等待1500毫秒


我不太确定您想用示例代码说明什么,但是如果您想并行运行Start()和Stop()(同样,我也不明白为什么),您可以执行类似于
parallel.Invoke(tr[0].Start(),tr[0].Stop())

的操作,您只是想简单介绍一下并行编程吗,或者您包含代码的真正原因是什么?没有原因,我只是想作为替代方案编写。当然,我将学习并行编程。我只是想知道。为什么您要使用Dispatcher.BeginInvoke,而该方法已经从Dispatcher线程运行?现在还不清楚你想并行调用什么函数。。。