我是否需要Task.Run从构造函数中调用异步方法?

时间:2017-10-20 12:32:41

标签: c# .net xamarin.forms

这两个都有效,但第一个结果是警告在被叫GetDateRanges之后继续执行并且我应该使用await。调用是在构造函数中,所以我认为我不能这样做。

鉴于结果相同,这些代码片段之间是否存在其他一些显着差异?是第一个举起主线程而我没有注意到?

public MainPage(IDateRangeRepository dateRangeRepository)
{
    GetDateRanges();
}

async Task GetDateRanges()
{
    var ranges = await dateRangeRepository.FetchDateRangesAsync(
        DateTime.Now, DateTime.Now);

    calendar.DateRanges = ranges;
} 

使用Task.Run ...

public MainPage(IDateRangeRepository dateRangeRepository)
{
   Task.Run(GetDateRanges);
}

async Task GetDateRanges()
{
   var ranges = await dateRangeRepository.FetchDateRangesAsync(
      DateTime.Now, DateTime.Now);

   Device.BeginInvokeOnMainThread(() =>
   {
      calendar.DateRanges = ranges;
   });
}

0 个答案:

没有答案