Oli*_*old 5 azure azure-worker-roles
我目前正在将WCF服务项目移植到Azure角色.到目前为止,包含该服务的库还托管了一个Quartz.Net JobFactory,用于一些轻量级后台处理(定期清理过时的电子邮件确认令牌).我是否必须将该代码移动到单独的工作者角色中?
不,您不必设置单独的辅助角色.
您只需在Web角色的OnStart()方法中启动后台线程即可.为该线程提供一个Timer对象,该对象在给定的时间跨度后执行您的方法.
因此,您可以避免新的工作角色.
class MyWorkerThread
{
private Timer timer { get; set; }
public ManualResetEvent WaitHandle { get; private set; }
private void DoWork(object state)
{
// Do something
}
public void Start()
{
// Execute the timer every 60 minutes
WaitHandle = new ManualResetEvent(false);
timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(60));
// Wait for the end
WaitHandle.WaitOne();
}
}
class WebRole : RoleEntryPoint
{
private MyWorkerThread workerThread;
public void OnStart()
{
workerThread = new MyWorkerThread();
Thread thread = new Thread(workerThread.Start);
thread.Start();
}
public void OnEnd()
{
// End the thread
workerThread.WaitHandle.Set();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2225 次 |
| 最近记录: |