1
私は非同期で複数のWcfサービスを呼び出す必要があります。私はそれらを変更することは非常に遅く、一度にすべてを呼び出してBOに完全なデータを取得する必要があります。WCFサービスへの複数の非同期呼び出しのスレッディング
以下のコードでは、同じメソッドを呼び出していますが、同じメソッドを呼び出すスレッドには問題がありますが、メソッドを呼び出すのは25だけです。
先ほどの例では、セープを示しました
私は、メソッドをロックする方法を教えてください。一度に1つのスレッドしか使用できないので、私のクラスでBackgroundWorkerProcessを使用することも有効ですMVC 2アプリケーション?
namespace WCFThreadingTest
{パブリック部分クラスをForm1:フォーム {パブリックstatic int型の結果= 0;
public Form1()
{
InitializeComponent();
Completed += (s, a) =>
{
// all complete, return to client.
MessageBox.Show(result.ToString());
auto.Close();
wrk.Dispose();
};
wrk.DoWork += (s, a) =>
{
Start();
};
wrk.RunWorkerAsync();
}
public event EventHandler Completed;
public AutoResetEvent auto = new AutoResetEvent(false);
private void Start()
{
auto.WaitOne();
Completed(this, EventArgs.Empty);
}
BackgroundWorker wrk = new BackgroundWorker();
private void button1_Click(object sender, EventArgs e)
{
ServiceReference1.Service1Client clien = new ServiceReference1.Service1Client();
for (int i = 0; i < 5; i++)
{
clien.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(clien_GetDataCompleted);
clien.GetDataAsync(i);
}
}
public void clien_GetDataCompleted(object sender, GetDataCompletedEventArgs e)
{
result += e.Result;
auto.Set();
}
}
} GetDataCompletedイベント、呼び出しごとに1、そうイベントが解雇されるたびに、あなたのハンドラが呼び出さなっている5倍(5×5に
こんにちは、ありがとうございます、余分な呼び出しを修正しましたが、私は今clien_GetDataCompletedの結果が増えていますが、Completedが最終結果変数を呼び出すと、最後の値を保持します。 –
何が結果ですか?どのように使用されていますか?その問題はWCFに関係することはまずありません。 – tomasr
こんにちはTomar、その大丈夫、私は代わりに.net 4からタスクモデルを使用し始めて、あなたの助けをありがとう。 –