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在导航功能中不可用。但它现在的导航效果与预期的一样,因此将立即将您的解决方案标记为已接受-因为您的解决方案是正确的。