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

时间:2011-11-28 22:34:45

标签: c# asp.net asynchronous

我需要异步调用某些方法。在启动时,应用程序在初始化一些事情上做了一些工作,但我不希望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);});
} 

以便将来其他方法也可以在需要时运行async,并将其全部集中在一个地方。如果我必须改变线程的逻辑,我可以用一种方法来做。

这种方法是否有任何性能问题,动态传递方法?

1 个答案:

答案 0 :(得分:4)

一如既往:“个人资料个人资料”!也就是说,在这种情况下,我会相当肯定地说:

在这种规模上一点也不,没关系:

加载页面甚至管理队列所花费的实际时间远远超过委托的调用开销(即使它在引擎盖下使用DynamicInvoke)