C# 如何使用并行编程通过使用并行调用一次调用多个函数?
我有一个像这样的WPF应用程序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() {
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线程运行?现在还不清楚你想并行调用什么函数。。。