0

スレッドでメソッドを実行したいのですが。このメソッドには複数の引数があり、戻り値を期待しています。誰か助けてもらえますか?

4

2 に答える 2

4
Thread thread = new Thread(() => 
       {
          var result = YourMethod(param1, param2);
          // process result here (does not invoked on your main thread)
       });

結果をメインスレッドに返す必要がある場合は、代わりにタスク(C#4)の使用を検討してください。

var task = new Task<ReturnValueType>(() => YourMethod(param1, param2));
task.Start();

// later you can get value by calling task.Result;

または以前のバージョンのC#で

Func<Param1Type, Param2Type, ReturnValueType> func = YourMethod;            
IAsyncResult ar = func.BeginInvoke(param1, param2, null, null);
ar.AsyncWaitHandle.WaitOne();
var result = func.EndInvoke(ar);
于 2012-05-10T13:19:50.557 に答える
1
Func<string, int, bool> func = SomeMethod;
AsyncCallback callback = ar => { bool retValue = func.EndInvoke(ar); DoSomethingWithTheValue(retValue };
func.BeginInvoke("hello", 42, callback, null);


...

bool SomeMethod(string param1, int param2) { ... }
于 2012-05-10T13:20:44.230 に答える