应用挂起时未在 Visual Studio 中调试



我有这个应用程序,它使用外部 Web 服务对用户进行身份验证,并且在进行身份验证后应导航到其他视图。

身份验证在 HttpWebRequest 中完成:

    private void btnLogin_Click(object sender, RoutedEventArgs e)
    {
        HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create("http://webservice");
        request.Method = "GET";
        request.BeginGetResponse(new AsyncCallback(CheckLogin), request);
    }

那么这里是回调:

    private void CheckLogin(IAsyncResult asynchronousResult)
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
        bool success = false;
        try
        {
            // End the operation
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamRead = new StreamReader(streamResponse);
            string responseString = streamRead.ReadToEnd();
            if (responseString.Contains("ok"))
            {
                success = true;
            }
            streamResponse.Dispose();
            streamRead.Dispose();
            response.Dispose();
        }
        catch (Exception e)
        {
        }
        request.Abort();
        request = null;
        if (success)
        {
            this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                Frame.Navigate(typeof(Main2));
            }).AsTask().Wait();
        }
    }

在Visual Studio中调试时,这运行良好,但是当我发布应用程序并安装包时,它会挂在Frame.Navigate上。我想这是因为 CheckLogin 方法未在 UI 线程中运行。

关于如何在后台线程中 Frame.Navigate(..) 的任何想法?

Dispatcher.RunAsync 和 Frame.Navigate 之间似乎没有真正的问题。所以我假设你没有朝正确的方向看。

也许您的页面内容有问题,而不是导航。

相关内容

最新更新