C#任务错误并非所有代码都返回路径

时间:2016-10-02 22:51:18

标签: c# asynchronous task

我收到错误:“并非所有路径都返回值”以用于以下函数

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();
        }

这是可能的吗?

0 个答案:

没有答案