更改App.xaml.cs的方法签名以返回异步任务<bool>

时间:2015-10-22 20:46:52

标签: c# silverlight windows-phone-8 async-await task

我可以在App.xaml.cs中更改inicialization方法的方法签名吗?

我正在尝试让应用程序等到我下载基本数据以将其加载到下一个屏幕,但是当我尝试使用Windows Phone Silverlight 8.0时出现错误。

这是方法。它位于App.xaml.cs中,它是在应用程序启动时执行的方法。

使用异步进行正常签名。我添加了async这个词。

    private async void Application_Launching(object sender, LaunchingEventArgs e)
    {
        Debug.WriteLine("hhhhhhhhhhhhhhhhhhhhhhhhhhhh");

        Debug.WriteLine("App-> Launching -> salvar_JSON");
        App.estaAtivo = true;
        try
        {
            Debug.WriteLine("App-> Launching -> sevidorWeb-> salvarJSON // Tentativa");
            await web.salvarJSON(ServidorWEB.URL_JSON_SLZ, ServidorWEB.ARQUIVO_JSON_SLZ);
            await web.salvarJSON(ServidorWEB.URL_JSON_ITZ, ServidorWEB.ARQUIVO_JSON_ITZ);
            await web.salvarJSON(ServidorWEB.URL_JSON_STI, ServidorWEB.ARQUIVO_JSON_STI);
            await sleepObj.set_to_NENHUM();
            App.HOJE = await tempo.getDiaSemana();
            await tempo.iniciarRelogioInterno(web);

        }

根据我的意愿改变签名:

  // Code to execute when the application is launching (eg, from Start)
        // This code will not execute when the application is reactivated
        private async Task<bool> Application_Launching(object sender, LaunchingEventArgs e)
        {
            Debug.WriteLine("hhhhhhhhhhhhhhhhhhhhhhhhhhhh");

            Debug.WriteLine("App-> Launching -> salvar_JSON");
            App.estaAtivo = true;
            try
            {
                Debug.WriteLine("App-> Launching -> sevidorWeb-> salvarJSON // Tentativa");
                await web.salvarJSON(ServidorWEB.URL_JSON_SLZ, ServidorWEB.ARQUIVO_JSON_SLZ);
                await web.salvarJSON(ServidorWEB.URL_JSON_ITZ, ServidorWEB.ARQUIVO_JSON_ITZ);
                await web.salvarJSON(ServidorWEB.URL_JSON_STI, ServidorWEB.ARQUIVO_JSON_STI);
                await sleepObj.set_to_NENHUM();
                App.HOJE = await tempo.getDiaSemana();
                await tempo.iniciarRelogioInterno(web);
                return true;
            }

我该怎么办?

错误如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

我同意KooKiz的建议。

但是你仍然可以按原样保留函数签名并使用Task.Run()。Wait()机制。

您可以将异步功能放在Run块中并强制UI等待它。

就像我说的那样,它不是一个好的方法,并建议显示一些加载屏幕并将你的资源加载机制置于其后。