将方法作为参数传入时出现性能问题
本文关键字:性能 问题 方法 参数 | 更新日期: 2023-09-27 18:15:55
我需要异步调用一些方法。在启动时,应用会做一些工作来初始化一些东西,但我不希望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);});
}
以便将来其他方法也可以在需要时异步运行,并且都在一个地方。如果我必须更改线程的逻辑,我可以在一个方法中完成。
这种动态传递方法的方法是否存在性能问题?
一如既往:"Profile Profile"!也就是说,在这种情况下,我将相当肯定地说:
不,在这个尺度上根本不重要,没有关系:
加载页面甚至管理Queue所花费的实际时间远远超过委托的调用开销(即使它在底层使用DynamicInvoke)