2016-12-28 32 views
1

您好我是新来赢取窗体,我想在窗体上的文本框中显示以下任务的进度,但我无法这样做。如何在windows应用程序的asyanc任务中添加文本框的值

// Create progress printing and querying tasks 
    Task progressPrintTask = new Task(() => 
    { 

     IJob jobQuery = null; 
     do 
     { 
      var progressContext = new CloudMediaContext(_accountName, _accountKey); 
      jobQuery = progressContext.Jobs.Where(j => j.Id == job.Id).First(); 
      // AppendTextBox("Indexer Job started"); 
      // textBox2.AppendText(string.Format("{0}\t{1}\t{2}", DateTime.Now, jobQuery.State, jobQuery.Tasks[0].Progress)); 
      // Console.WriteLine(string.Format("{0}\t{1}\t{2}", DateTime.Now, jobQuery.State, jobQuery.Tasks[0].Progress)); 
      Thread.Sleep(10000); 
     } 
     while (jobQuery.State != JobState.Finished && 
       jobQuery.State != JobState.Error && 
       jobQuery.State != JobState.Canceled); 
    }); 

    progressPrintTask.Start(); 

请查看拍摄画面更加详细

enter image description here

请帮

+0

'但是我无法这样做'你尝试了什么?为什么它不工作?例外? – ChrFin

+1

@ChrFin我在Console.write中获取值,但是当我在文本框中指定该值时,则不显示任何内容。 –

+0

是否有可能在您调试输出中遇到异常?你在等待'progressPrintTask'吗? – ChrFin

回答

0

我猜你缺少一个调用:

// Create progress printing and querying tasks 
Task progressPrintTask = new Task(() => 
    { 

     IJob jobQuery = null; 
     do 
     { 
      var progressContext = new CloudMediaContext(_accountName, _accountKey); 
      jobQuery = progressContext.Jobs.Where(j => j.Id == job.Id).First(); 
      textBox2.Invoke(() => textBox2.AppendText(string.Format("{0}\t{1}\t{2}", DateTime.Now, jobQuery.State, jobQuery.Tasks[0].Progress))); 
      Thread.Sleep(10000); 
     } 
     while (jobQuery.State != JobState.Finished && 
       jobQuery.State != JobState.Error && 
       jobQuery.State != JobState.Canceled); 
    }); 
progressPrintTask.Start(); 
+0

对不起@ChrFin不起作用 –

+0

我的应用程序冻结当我用这个 –

+0

@Anurag_Systematix然后请显示更多的代码... – ChrFin

相关问题