5

ここにコードのサンプルがあります

private void MethodStarter()
{
Task myFirstTask = Task.Factory.StartNew(Method1);
Task mySecondTask = Task.Factory.StartNew(Method1);
}

private void Method1()
{
 // your code
}

private void Method2()
{
 // your code
}

コールバックを実行して関数に引数を渡すことができる並列タスクのコード スニペットを探しています。誰でも助けることができます。

4

2 に答える 2

12

私があなたの質問を正しく理解していれば、これが答えかもしれません:

private void MethodStarter()
{
    Task myFirstTask = Task.Factory.StartNew(() => Method1(5));
    Task mySecondTask = Task.Factory.StartNew(() => Method2("Hello"));
}

private void Method1(int someNumber)
{
     // your code
}

private void Method2(string someString)
{
     // your code
}

すべてのスレッドを同時に開始したい場合は、h1ghfive の例を使用できます。

更新: 動作するはずのコールバックを使用した例ですが、テストしていません。

private void MethodStarter()
{
    Action<int> callback = (value) => Console.WriteLine(value);
    Task myFirstTask = Task.Factory.StartNew(() => Method1(5, callback));
    Task mySecondTask = Task.Factory.StartNew(() => Method2("Hello"));
}

private void Method1(int someNumber, Action<int> intCallback)
{
     // your code
     intCallback(100); // will call the call back function with the value of 100
}

private void Method2(string someString)
{
     // your code
}

コールバック関数を渡したくない場合は、継続を見ることもできます。

于 2012-08-13T08:15:18.253 に答える
3

代わりに次のようなものを試してください:

Parrallel.Invoke(
  () => Method1(yourString1),
  () => Method2(youString2));
于 2012-08-13T08:17:54.370 に答える