c# – 在ASP.NET中调用使用签名(例如)Func类型定义的委托是否同步?

在第一次检查时,似乎确实如此.对调用堆栈的快速检查表明传递给委托的方法是按照预期执行的.然而….

在“单击事件”中调用委托并尝试修改控件(例如可见性,绑定,更新更新面板)时没有任何反应(事实上,对于UpdatePanel.Update的显式调用,会抛出一个异常,说该方法不能在Render之后调用 – 尽管如此,我觉得不是在页面生命周期的那个阶段,而是在一个控制事件中 – 总是作为一个回发事件处理,总是在Render之前,据我所知.).

但是…当返回到调用站点并执行相同的代码(在委托调用之后)我尝试执行(从委托调用的方法中)以影响对各种控件的更改时,它可以正常工作.

会发生什么事?

编辑
框架代码:

IModalWorkflowItem
{
    void ExecuteWorkflow();
    .....
}

public abstract class BaseModalWorkflow : IModalWorkflowItem
{
    ....
    protected Func<String, IMinervaValidator , Boolean>_action;
    ....

    /// <summary>
    /// Using the properties (if necessary) perform the action
    /// required on completion of modal workflow
    /// </summary>
    /// <returns></returns>;
    protected abstract Boolean PerformAction(PropertyBag properties);
    }

创建以lambda身份传递的对象作为匿名方法…

    new ModalWorkflowUserGroupAction(ModalPopupExtender_UserPrompt,
                   Session,
                   (x, y) =>
                     {
                         if (UserGroupManager.UserAccessToUserGroup(membershipID,
                             CurrentUserGroup.UserGroupID, false))
                         {
                             BindUserList();

实际通话:

/// <summary>
/// Call the next action in the modal workflow. 
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ExpandingButton_ModalConfirmContinue_Click
                                 (Object sender, EventArgs e)
{
    if (CurrentModalWorkFlowItem != null)
    {
        CurrentModalWorkFlowItem.ExecuteWorkflow();

最佳答案 是的,在任何.NET程序类型中,同步调用任何委托.这种事情并没有因为你碰巧使用ASP.NET而突然改变.

点赞