![](/img/trans.png)
[英]How to make a call to WCF webservice with more than one client at the same time (in parallel)
[英]How can I use parallel programming to call more than one function at a time by using Parallel Invoke?
我有這樣的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));
這將立即調用所有這三個函數( () => ...
是內聯聲明的函數,不帶任何參數,並返回隨后出現的單個表達式的結果。)和阻塞(表示執行不會繼續過去在調用者線程上指向該點),直到所有這三個函數執行完畢。 在這種情況下,Parallel.Invoke將花費1500毫秒,因為最長的運行函數是第二個函數,該函數等待1500毫秒才返回。
我不太確定您想用示例代碼來說明什么,但是如果您想並行運行Start()和Stop()(再次,實際上並不確定為什么),您可以類似於Parallel.Invoke(tr[0].Start(), tr[0].Stop())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.