我收到错误:“并非所有路径都返回值”以用于以下函数
public Computer[] FetchComputers()
{
Task<Computer[]> T1 = Task.Run(() =>
{
return computerRepo.GetComputers();
});
T1.ContinueWith(c=>
{
return c.Result;
});
}
我能做到:
public Computer[] FetchComputers()
{
Task<Computer[]> T1 = Task.Run(() =>
{
return computerRepo.GetComputers();
});
return T1.Result;
}
但问题是当“computerRepo.GetComputers()”方法需要很长时间我的MainThread被阻止并且UI冻结。
如何在不使用任务阻止UI的情况下执行此任务?
更新
public Computer[] GetComputers()
{
Task<Computer[]> T1 = Task.Run(() =>
{
int x;
for (int i = 0; i < 1000000000; i++)
{
x = i;
}
var computer = new Computer[]
{
new Computer() { Name = "srv01", IPAddress = "10.17.138.169" },
new Computer() { Name = "srv02", IPAddress = "10.17.136.25" },
new Computer() { Name = "srv03", IPAddress = "10.167.9.22" }
};
return computer;
});
return T1.Result;
}
如何在这里实现异步?
public async Task<Computer[]> FetchComputers()
{
return computerRepo.GetComputers();
}
这是可能的吗?