将方法作为参数传递时的性能问题?

问题描述:

我需要调用一些异步的方法。在启动时,该应用程序在初始化一些事情方面做了一些工作,但我不希望UI被阻挡。所以,这个函数使用Threadpool queueitem方法在一个单独的线程中执行。将方法作为参数传递时的性能问题?

我在想有一些类似于下面的方法。

protected void Page_Load(object sender, EventArgs e) 
{ 
    DoAsyncOperation(new Func<string, int>(TestMethod), "test"); 
} 

private int TestMethod(string p) 
{ 
    return 0; 
} 

public bool DoAsyncOperation(Delegate asyncMethod, params object[] args) 
{ 
    return ThreadPool.QueueUserWorkItem(delegate {asyncMethod.DynamicInvoke(args);}); 
} 

因此在未来其他方法也可以运行异步如果需要和它的全部在一个地方。如果我必须改变线程的逻辑,我可以用一种方法来完成。

该方法是否存在任何性能问题,并动态传递该方法?

一如既往:“简介简介简介”!这就是说,在这种情况下,我相当肯定地说:

无不是在所有在这个规模,这并不重要:

实际花费的时间加载页面,甚至管理的队列远大于代理的调用开销(即使它在引擎盖下使用DynamicInvoke)

+0

感谢您的回复。你能提出一些我可以分析的方法,只是为了学习。 –

+0

@AlexJ:我建议[MiniProfiler的ASP.Net(和ASP.Net MVC)](http://code.google.com/p/mvc-mini-profiler/)或选择任何一个通用[.NET Profiler工具从这里](http://*.com/questions/3927/what-are-some-good-net-profilers) – sehe