以 Win 形式使用 Azure 辅助角色后台服务
Engage Azure Worker Role Background Service In Win Form
我创建了一个新的 winforms 应用程序。我正在尝试创建一个 class 来侦听消息的存储队列。
using System;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Queue;
using System.Threading;
using Microsoft.WindowsAzure.ServiceRuntime;
using System.Configuration;
namespace PMonitor
{
public class QueueWorker : RoleEntryPoint
{
public override void Run()
{
CloudQueue queue = clnt.GetQueueReference("stuff");
while (true)
{
CloudQueueMessage qMessage = null;
do
{
qMessage = queue.GetMessage(TimeSpan.FromSeconds(10));
if (qMessage != null)
{
//handle message
}
}
while (qMessage != null);
Thread.Sleep(10000);
}
}
public override bool OnStart()
{
return base.OnStart();
}
}
}
如何让工作人员在表单中启动 运行ning 到 运行 并在它在队列中找到消息时告诉我?
当前正在实例化此 class 并在表单加载中调用 运行() 会锁定表单。
这样做的模式是什么?
我怀疑对工作者角色存在基本的误解。这些不是您像 class 那样实例化的服务。相反,这些是 Azure 中 运行 无状态虚拟机的定义。您发布的代码片段是在启动辅助角色实例(虚拟机)后获得 运行 的框架代码,代码(例如队列消耗,在您的情况下)运行ning 在 Run()
方法。
WinForms 应用程序对 RoleEntryPoint
classes 的需求为零,因为它们专门用于 Azure 中的无状态 VM 运行ning。
队列处理(或您可能需要 运行 的任何其他任务)与工作者角色无关;您的应用只需使用存储 SDK(或直接调用 REST API)即可使用队列消息。 How/where您设置队列处理逻辑完全由您决定。
注意:您当然可以从您的 WinForms 应用程序在辅助角色实例中调用服务 运行ning,但我认为这不是您要问的。
Whosebug 上有几个答案更详细地介绍了工作者角色,例如 this one。
我创建了一个新的 winforms 应用程序。我正在尝试创建一个 class 来侦听消息的存储队列。
using System;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Queue;
using System.Threading;
using Microsoft.WindowsAzure.ServiceRuntime;
using System.Configuration;
namespace PMonitor
{
public class QueueWorker : RoleEntryPoint
{
public override void Run()
{
CloudQueue queue = clnt.GetQueueReference("stuff");
while (true)
{
CloudQueueMessage qMessage = null;
do
{
qMessage = queue.GetMessage(TimeSpan.FromSeconds(10));
if (qMessage != null)
{
//handle message
}
}
while (qMessage != null);
Thread.Sleep(10000);
}
}
public override bool OnStart()
{
return base.OnStart();
}
}
}
如何让工作人员在表单中启动 运行ning 到 运行 并在它在队列中找到消息时告诉我?
当前正在实例化此 class 并在表单加载中调用 运行() 会锁定表单。
这样做的模式是什么?
我怀疑对工作者角色存在基本的误解。这些不是您像 class 那样实例化的服务。相反,这些是 Azure 中 运行 无状态虚拟机的定义。您发布的代码片段是在启动辅助角色实例(虚拟机)后获得 运行 的框架代码,代码(例如队列消耗,在您的情况下)运行ning 在 Run()
方法。
WinForms 应用程序对 RoleEntryPoint
classes 的需求为零,因为它们专门用于 Azure 中的无状态 VM 运行ning。
队列处理(或您可能需要 运行 的任何其他任务)与工作者角色无关;您的应用只需使用存储 SDK(或直接调用 REST API)即可使用队列消息。 How/where您设置队列处理逻辑完全由您决定。
注意:您当然可以从您的 WinForms 应用程序在辅助角色实例中调用服务 运行ning,但我认为这不是您要问的。
Whosebug 上有几个答案更详细地介绍了工作者角色,例如 this one。