public override void Run() { Trace.TraceInformation("WorkerRole1 is running"); while (true) { CloudQueueMessage commandMessage = StorageManager.CommandQueue().GetMessage(); if (commandMessage != null) { switch (commandMessage.AsString) { case "startcrawling": crawler.Start(); StorageManager.CommandQueue().DeleteMessage(commandMessage); break; case "stopcrawling": crawler.Stop(); StorageManager.CommandQueue().DeleteMessage(commandMessage); break; case "clear": StorageManager.LinkQueue().Clear(); StorageManager.CommandQueue().Clear(); StorageManager.HTMLQueue().Clear(); StorageManager.GetTable().DeleteIfExists(); StorageManager.PerformanceCounterTable().DeleteIfExists(); StorageManager.ErrorTable().DeleteIfExists(); break; default: break; } } new Task(crawler.GetPerfCounters).Start(); if (Crawler.state.Equals("Loading")) { new Task(crawler.GetPerfCounters).Start(); crawler.CrawlUrl(); } else if (crawler.GetState().Equals("Crawling")) { new Task(crawler.GetPerfCounters).Start(); crawler.GetHTMLData(); } } }