C# IoT浏览器,从任务/线程浏览webview

C# IoT浏览器,从任务/线程浏览webview,c#,.net,azure,win-universal-app,C#,.net,Azure,Win Universal App,有一个网络视图: <WebView x:Name="webView" Margin="0,10" Grid.RowSpan="3" LoadCompleted="webView_LoadCompleted"/> 在覆盖代码中: protected override void OnLaunched(LaunchActivatedEventArgs e) 当应用程序启动时,可以使用以下代码导航到所需的网站: Frame rootFrame = Window.Current.Conte

有一个网络视图:

<WebView x:Name="webView" Margin="0,10" Grid.RowSpan="3" LoadCompleted="webView_LoadCompleted"/>
在覆盖代码中:

protected override void OnLaunched(LaunchActivatedEventArgs e)
当应用程序启动时,可以使用以下代码导航到所需的网站:

Frame rootFrame = Window.Current.Content as Frame;
if(rootFrame == null) rootFrame = new Frame();
rootFrame.Navigate(typeof(MainPage), "ms-appx-web:///help.html");
所以,电流在这一点上不是零。 如果我将rootframe保存为static,并在任务的稍后点使用它,我会得到一个封送错误-基本上是说该对象被引用以封送到另一个线程

我的C知识是,。恐怕正在进行中。 到目前为止,我还无法找到一个关于如何让webview响应内部任务的正确解释。可能吗?如果是,怎么做

PS:初始示例代码来自:

问题是,我想告诉Webview导航到某个网页

根据您的代码片段,您正在开发一个UWP应用程序。如果您想知道如何导航到网站,您应该能够使用WebView的导航方法,例如:

webView.Navigate(new Uri("http://www.google.com"));
await Task.Run(Navigate);
private async Task Navigate()
{        
    try
    {
        await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
        {
            webView.Navigate(new Uri("http://www.google.com"));    
        });
    }
    catch (Exception e)
    {
        Debug.WriteLine("{0} Exception caught.", e);
    }
}
当应用程序启动时,可以使用以下代码导航到所需的网站:

Frame rootFrame = Window.Current.Content as Frame;
if(rootFrame == null) rootFrame = new Frame();
rootFrame.Navigate(typeof(MainPage), "ms-appx-web:///help.html");
默认情况下,内部的代码段通过导航到一页。框架控件支持导航到实例,而不是网页,您不能按框架导航到网站。上面的代码片段只能让根框架导航到MainPage,而不能导航到help.html。但是你可以得到微软的appx-web:///help.html 参数,并通过主页上的Web视图导航到它

我得到一个封送错误-基本上是说对象被引用以封送到另一个线程

如果您想在不同的线程中调用UIElement,您应该能够使用,而不能直接调用

最后,我认为您实际上想要做的是通过WebView从非UI线程导航到web站点。例如:

webView.Navigate(new Uri("http://www.google.com"));
await Task.Run(Navigate);
private async Task Navigate()
{        
    try
    {
        await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
        {
            webView.Navigate(new Uri("http://www.google.com"));    
        });
    }
    catch (Exception e)
    {
        Debug.WriteLine("{0} Exception caught.", e);
    }
}

是的,最后一个接近所需的功能。但是,这不应该是:wait System.ServiceModel.Dispatcher.RunAsync-这会导致一个错误,指出该命名空间中不存在RunAsync。此功能应包括哪些用途,或者此功能在UWP中不可用?@Thomas,否,其类型为Windows.UI.Core.Core​调度员。我更新了我的代码片段以添加完整的参考。请检查。明白了,可以使用了。在OnLaunched期间,我必须将对webview的引用保存为Frame,但是Frame rootFrame=Window.Current.Content为Frame;mainWindow=rootFrame,因为webView在导航功能中不可用。但它现在的导航效果与预期的一样,因此将立即将您的解决方案标记为已接受-因为您的解决方案是正确的。