我需要异步调用某些方法。在启动时,应用程序在初始化一些事情上做了一些工作,但我不希望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,并将其全部集中在一个地方。如果我必须改变线程的逻辑,我可以用一种方法来做。
这种方法是否有任何性能问题,动态传递方法?
答案 0 :(得分:4)
一如既往:“个人资料个人资料”!也就是说,在这种情况下,我会相当肯定地说:
在这种规模上一点也不,没关系:
加载页面甚至管理队列所花费的实际时间远远超过委托的调用开销(即使它在引擎盖下使用DynamicInvoke)