2011-01-11 8 views
1

こんにちは、私はスレッドでコールスレッドでパラメータ化された方法で使用してC#の

FTPService FtpOj = new FTPService(); 
FtpOj.AvtivateFTP(item, ObjFTP, AppHelper.DoEventLog, AppHelper.DoErrorLog, AppHelper.EventMessage, strLableXmlPath, AppHelper.emailfrom); 
  1. 私はAvtivateFTPを呼び出すことができますどのように()メソッドのようないくつかのパラメータを取っているスレッド内の関数を呼び出し、内部パラメータを渡したいすべて 関数?
  2. スレッド内でvoid型関数のみを呼び出すことはできますか?

答えて

1

FTPServiceがどこから来るか私は知らないが、私はそれの欠如で

IAsyncReslt BeginActivate () 

のようないくつかのメンバーを期待、あなたはラムダを使用することができます:

ThreadPool.QueueUserWorkItem(() => FtpOj.AvtivateFTP(item, ...)); 

を質問します2:はい、回避策があります。たとえば、TPLライブラリでは、値を返すタスクを定義できます。

+0

スレッドコール内で何が()であるか..ThreadPool.QueueUserWorkItem(()=> FtpOj.AvtivateFTP(item、...)); – Pankaj

+0

空のパラメータリスト。 –

0

あなたの2番目の質問に答えてください。任意の値を返すメソッドを呼び出すことができます。ここにその例を示します。

また、.NET 4.0を使用している場合は、タスク並列ライブラリ(TPL)を使用することをお勧めします。 TPLを使用する方がはるかに簡単です。

もう1つの示唆は、関数に渡す多くのパラメータを1つのオブジェクトにラップし、そのオブジェクトを非同期メソッドに渡すためです。

希望すると、これが役立ちます。

関連する問題