大家好 我想在线程中调用一个函数,它接受一些像
这样的参数FTPService FtpOj = new FTPService();
FtpOj.AvtivateFTP(item, ObjFTP, AppHelper.DoEventLog, AppHelper.DoErrorLog, AppHelper.EventMessage, strLableXmlPath, AppHelper.emailfrom);
答案 0 :(得分:1)
我不知道FTPService来自哪里,但我希望像
这样的成员 IAsyncReslt BeginActivate ( )
缺乏这种情况,你可以使用lambda:
ThreadPool.QueueUserWorkItem( () => FtpOj.AvtivateFTP(item, ...) );
问题2:是的,但有一些解决方法,例如在TPL库中,您可以定义一个返回值的任务。
答案 1 :(得分:0)
回答你的第二个问题。您可以调用返回任何值的方法。以下是它的例子:
static void Main()
{
Func<string, int> method = Work;
IAsyncResult cookie = method.BeginInvoke ("test", null, null);
//
// ... here's where we can do other work in parallel...
//
int result = method.EndInvoke (cookie);
Console.WriteLine ("String length is: " + result);
}
static int Work (string s) { return s.Length; }
此外,如果您使用的是.NET 4.0,我建议使用任务并行库(TPL)。使用TPL要容易得多。
另一个建议是,因为你有许多参数传递给函数,将它们包装在一个对象中并将该对象传递给异步方法。
希望这会有所帮助。