尝试在异步任务

时间:2017-08-28 08:10:11

标签: c#

我试图在其他测试运行时在后台获取数据到文本文件 -

public void main()
{
  GetData()
  ...Starting tests.....
}
public async Task GetData()
{
    await Task.Run(()=>
    {
        string path = "" + ResultsPath + "\\Telemes.txt";
        File.WriteAllText( Path , string.Join("," , Meas().Keys) + "\r\n");
        while(true)
        {
            File.AppendAllText(path , string.Join(",", Meas().Values));   

            if(tokenSource.IsCancellationRequested)
            {
                break;
            }
        }});
}

将它作为同步任务运行正常并获取我需要的所有数据。 以这种方式调用它根本不会创建任何文本文件,但测试结果很好。

我猜我没有正确地调用任务。错误在哪里?

1 个答案:

答案 0 :(得分:0)

您需要等待主要方法中的任务。如下所示:

public async void main()
{
  Task getDataTask = GetData();
  ...Starting tests.....
  //Do something that is not dependent upon GetData()
  await getDataTask;
  //Processing completed
  Console.Write("File GetData - complete");
}

注意:为了能够使用await,你的main()方法也应该是异步的!