微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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而突然改变.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐