Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 任何形式循环的Web浏览器逻辑错误_C#_.net_Wpf - Fatal编程技术网

C# 任何形式循环的Web浏览器逻辑错误

C# 任何形式循环的Web浏览器逻辑错误,c#,.net,wpf,C#,.net,Wpf,我正在尝试为工作创建一个简单的Kiosk风格的web浏览器。这应该在两个internet选项卡之间自动旋转。永远不会有任何用户输入。静态网页,预先指定,仅用于在我们的主办公室中显示。我正在使用一个C#.NET WPF应用程序,每个选项卡上都有一个TabControl和一个web浏览器。我可以为每个标签预先分配一个网页,很简单。我不能做的是生成无限循环,在两个选项卡之间不断切换。任何循环[while(true)、for(;;)、do while(true)]都将阻止表单加载。提供的代码是我试图首先

我正在尝试为工作创建一个简单的Kiosk风格的web浏览器。这应该在两个internet选项卡之间自动旋转。永远不会有任何用户输入。静态网页,预先指定,仅用于在我们的主办公室中显示。我正在使用一个C#.NET WPF应用程序,每个选项卡上都有一个TabControl和一个web浏览器。我可以为每个标签预先分配一个网页,很简单。我不能做的是生成无限循环,在两个选项卡之间不断切换。任何循环[while(true)、for(;;)、do while(true)]都将阻止表单加载。提供的代码是我试图首先在循环中生成网页,然后返回并添加自动切换的逻辑

namespace LoopNet
{
    public partial class MainWindow : Window
    {
       public MainWindow()
       {
            InitializeComponent();

            while(true)
            {
                Calendar1.Navigate("http://www.google.com");
                GIS1.Navigate("http://www.YouTube.com");
            }
        }
    }
}

在主线程上调用任何类似的东西都会挂起应用程序。正如评论所说,使用计时器

注意:如果Timer.appeased方法正在对UI进行操作,那么它不会喜欢它。对此的快速解决方案是使用Dispatcher invoke方法

你最终会得到以下几点:

public void CreateTimer() 
{
   var timer = new System.Timers.Timer(1000); // fire every 1 second
   timer.Elapsed += HandleTimerElapsed;
}

public void HandleTimerElapsed(object sender, ElapsedEventArgs e)
{
    Application.Current.Dispatcher.Invoke(
    () => 
    {
         //do things on UI thread...
         SwitchTheTabs();
    }
);    

添加一个已加载的事件处理程序并将其粘贴在其中

为什么不使用计时器对象并向其已用事件添加一个方法,该方法可以处理切换选项卡。选中此项,使post()代码每秒在选项卡之间有效切换数千次。您是否尝试过在选项卡开关之间实现预设延迟?(这里还有其他问题,但您似乎还没有考虑到您想要的延迟,因为您的代码中实际上没有提到)这将如何解决问题?由于无限循环,UI仍然会冻结。他说他的问题是表单根本无法加载。我同意根据我的原始帖子进行的向下投票——它太简洁了,所以我对它进行了编辑。如果投票被否决是由于其他原因,那么请留下评论,说明原因,以便我也能了解。(在我看来,没有评论的否决票只是有点刻薄)看起来你对我来说修复得很好,我在评论中链接了一个Dispatcher对象,它可能更适合OPs问题。另外,我没有投反对票。