C# - 文本框不需要等到结束?

时间:2017-06-06 14:31:58

标签: c# dialog try-catch buttonclick

我有这段代码:

private void button2_Click(object sender, EventArgs e)
{
    Cursor = Cursors.WaitCursor;
    logBox.Text += "My text";

    try
    {
        ping thing;
    }
    catch 
    { 
    }
}

如何在尝试之前显示logBox.Text + =?实际上,需要等待线程结束才能在我的日志框中显示文本...

我不想等待应用程序进行尝试,并在单击按钮时直接显示logBox.Text。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用Task.Factory来实现这一目标。 docs的示例:

using System;
using System.IO;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task[] tasks = new Task[2];
      String[] files = null;
      String[] dirs = null;
      String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

      tasks[0] = Task.Factory.StartNew( () => files = Directory.GetFiles(docsDirectory));
      tasks[1] = Task.Factory.StartNew( () => dirs = Directory.GetDirectories(docsDirectory));

      Task.Factory.ContinueWhenAll(tasks, completedTasks => {
                                             Console.WriteLine("{0} contains: ", docsDirectory);
                                             Console.WriteLine("   {0} subdirectories", dirs.Length);
                                             Console.WriteLine("   {0} files", files.Length);
                                          } );
   }
}
// The example displays output like the following:
//       C:\Users\<username>\Documents contains:
//          24 subdirectories
//          16 files

只需将您的任务创建放入您正在使用的事件处理程序中。

答案 1 :(得分:-2)

将您的代码修改为以下内容:

async