我试图在Azure上创建后台进程方面获得一些理解和经验 .
我创建了一个简单的控制台应用程序并将其转换为Azure辅助角色 . 我该如何调用它?我尝试使用Azure Scheduler,但看起来调度程序只能通过消息队列或HTTP / HTTPS调用辅助角色 .
我从未想过任何类型的沟通,因为我的想法是创建一个与任何其他应用程序无法真正通信的后台进程 . 我是否需要将worker角色转换为Web角色并使用Azure Scheduler使用HTTP / HTTPS调用它?
Worker 角色有三个事件:
OnStart
OnRun
OnStop
public class WorkerRole:RoleEntryPoint{ManualResetEvent CompletedEvent = new ManualResetEvent(false);
public override void Run(){//你的后台处理代码CompletedEvent.WaitOne();}
public override bool OnStart(){return base.OnStart();}
public override void OnStop(){CompletedEvent.Set();base.OnStop();}}
您运行/调试控制台转换的辅助角色的那一刻 . 前两个(OnStart和OnRun)按顺序触发 . 现在在OnRun中,您必须通过使用while循环或使用 ManualResetEvent 来保持线程处于活动状态,这是您的后台处理代码所在的位置 .
ManualResetEvent
当您从OnRun释放线程或者某些不期望的内容时,会触发OnStop . 这是处理对象的地方 . 关闭未关闭的文件句柄数据库连接等
1 回答
Worker 角色有三个事件:
OnStart
OnRun
OnStop
public override void Run()
{
//你的后台处理代码
CompletedEvent.WaitOne();
}
public override bool OnStart()
{
return base.OnStart();
}
public override void OnStop()
{
CompletedEvent.Set();
base.OnStop();
}
}
您运行/调试控制台转换的辅助角色的那一刻 . 前两个(OnStart和OnRun)按顺序触发 . 现在在OnRun中,您必须通过使用while循环或使用
ManualResetEvent
来保持线程处于活动状态,这是您的后台处理代码所在的位置 .当您从OnRun释放线程或者某些不期望的内容时,会触发OnStop . 这是处理对象的地方 . 关闭未关闭的文件句柄数据库连接等