设置事件处理程序时的"Method Name Expected"



我正在尝试为项目类(多个实例)创建一个计时器,该计时器在运行时将调用另一个类(BuildEngine.AddBuild)的静态方法以将自身(项目)添加到构建队列中。

我收到以下错误:

Error   4   Method name expected

构建引擎类:

        // Set timers for builds
        _Logger.Log("Scheduling Builds ...");
        foreach (Project project in _ProjectList)
        {
            switch (project.TriggerType)
            {
                case "Scheduled":
                    TimeSpan nowTime = new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 0);
                    TimeSpan projectTime = project.Time;
                    project.ProjectTimer = new Timer(nowTime.Subtract(projectTime).TotalMilliseconds);
                    project.ProjectTimer.Elapsed += new ElapsedEventHandler(BuildEngine.AddBuild(project));
                    project.ProjectTimer.AutoReset = true;
                    project.ProjectTimer.Enabled = true;
                    break;
                case "Continuous":
                    break;
            }
        }

BuildEngine.AddBuild():

    public static void AddBuild(Project project)
    {
        Build build = new Build();
        build.Project = project;
        build.BuildNumber = -1;
        build.BuildStatus = BuildStatus.NotBuilding;
        _BuildQueue.Add(build);
    }

BuildEngine 方法的签名与ElapsedEventHandler委托的签名不匹配,即使匹配,也不能像这样为其提供参数。

尝试将事件绑定到 lambda 表达式(也称为匿名函数):

project.ProjectTimer.Elapsed += (s, e) => BuildEngine.AddBuild(project);

最新更新