private async void Detect_Topics(string text) { try { var source = text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList(); var randomText = new RandomText(source); var request = new TopicRequest(); for (int i = 0; i < 100; i++) { request.Documents.Add(new TopicDocument() { Id = i.ToString(), Text = randomText.Next() }); } MainWindow mainWindow = Window.GetWindow(this) as MainWindow; var client = new TopicClient(mainWindow._scenariosControl.SubscriptionKey); var opeationUrl = await client.StartTopicProcessingAsync(request); TopicResponse response = null; var doneProcessing = false; while (!doneProcessing) { response = await client.GetTopicResponseAsync(opeationUrl); switch (response.Status) { case TopicOperationStatus.Cancelled: Log("Operation Status: Cancelled"); doneProcessing = true; break; case TopicOperationStatus.Failed: Log("Operation Status: Failed"); doneProcessing = true; break; case TopicOperationStatus.NotStarted: Log("Operation Status: Not Started"); Thread.Sleep(100); break; case TopicOperationStatus.Running: Log("Operation Status: Running"); Thread.Sleep(100); break; case TopicOperationStatus.Succeeded: Log("Operation Status: Succeeded"); doneProcessing = true; break; } } foreach (var topic in response.OperationProcessingResult.Topics) { var score = topic.Score * 100; Log(string.Format("{0} ({1}%)", topic.KeyPhrase, score)); } } catch (Exception ex) { Log(ex.Message); } }