I want to do multiple operations in a single worker role. How to create threads in worker role?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
由
翻译强力驱动
问题:
回答1:
You could add multiple workers in the WorkerRole::OnStart()
as described here http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2010/12/running-multiple-threads-on-windows.html
public class WorkerRole : ThreadedRoleEntryPoint { public override void Run() { // This is a sample worker implementation. Replace with your logic. Trace.WriteLine("Worker Role entry point called", "Information"); base.Run(); } public override bool OnStart() { List workers = new List(); workers.Add(new ImageSizer()); workers.Add(new ImageSizer()); workers.Add(new ImageSizer()); workers.Add(new HouseCleaner()); workers.Add(new TurkHandler()); workers.Add(new Crawler()); workers.Add(new Crawler()); workers.Add(new Crawler()); workers.Add(new Gardener()); workers.Add(new Striker()); return base.OnStart(workers.ToArray()); } } internal class Striker : WorkerEntryPoint { public override void Run() { while (true) { // Do Some Work Thread.Sleep(100); } } }
回答2:
In a nutshell, it's no different then in any other console application.
回答3:
Two different examples that do this:
http://msdn.microsoft.com/en-us/library/ff803372.aspx (scroll to "Inside the implementation"
http://msdn.microsoft.com/en-us/library/ff966485.aspx (scroll to "inside the implementation"). This example uses the TPL available in .NET 4.0 for parallel task scheduling.