使用 WebRole.cs 在“OnStart()”中运行自定义代码时,推荐调用 base 的方法是什么.OnStart

本文关键字:OnStart 调用 代码 方法 base 是什么 运行 cs WebRole 使用 自定义 | 更新日期: 2023-09-27 18:34:51

使用 WebRole.cs 配置 IIS 时,建议调用 base.OnStart() 的方法是什么?

public class WebRole : Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint
    {
        public override bool OnStart()
        {
            RunMyCode(); 
            return base.OnStart();
        }
    }

public class WebRole : Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint
    {
        public override bool OnStart()
        {
            var result = base.OnStart();
            if (result == true) { RunMyCode(); } 
            return result;
        }
    }

换句话说,"考虑基类的返回值是否有意义?

我(我认为(经历过有时基本函数必须返回false并且我的代码从未被调用的行为。

使用 WebRole.cs 在“OnStart()”中运行自定义代码时,推荐调用 base 的方法是什么.OnStart

根据官方文档,对base.OnStart的调用是该方法的最后一个语句。这些方法仅作为 API 提供。RoleEntryPoint 是一个抽象类,具有默认的单行实现(或根本没有实现(。同样根据同一文档,您将看到如果返回 False,您的角色实例将被停止(从而导致角色回收并且无法启动(。最后每部纪录片:

通常,应避免从 OnStart 方法返回 false。

如果您查看(使用您选择的 .NET 反编译器(RoleEntryPoint 的源代码,您会发现 OnStart 的默认实现只返回 true:

using System.Threading;
namespace Microsoft.WindowsAzure.ServiceRuntime
{
  public abstract class RoleEntryPoint
  {
    public virtual bool OnStart()
    {
      return true;
    }
    public virtual void Run()
    {
      Thread.Sleep(-1);
    }
    public virtual void OnStop()
    {
    }
  }
}

它与 SDK 的 v.2.4 一起。自早期 1.xx 版本以来一直如此。