Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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# 调度程序没有生成新线程_C#_Wpf_Multithreading_Frame_Dispatcher - Fatal编程技术网

C# 调度程序没有生成新线程

C# 调度程序没有生成新线程,c#,wpf,multithreading,frame,dispatcher,C#,Wpf,Multithreading,Frame,Dispatcher,首先,对不起我的英语 我正在制作一个WPF/C应用程序,带有框架和页面 当我尝试快速更改显示的页面时(4或5次),程序开始冻结,我需要等待 我被迫使用调度程序在后台加载页面,这样它们就不会冻结整个应用程序。但还是很冷。调度程序似乎没有调用新线程 我正在使用以下代码: this.Dispatcher.Invoke((Action)(() => // BeginInvoke also don't work { Page1 p = new Page1(); Fra

首先,对不起我的英语

我正在制作一个WPF/C应用程序,带有框架和页面

当我尝试快速更改显示的页面时(4或5次),程序开始冻结,我需要等待

我被迫使用调度程序在后台加载页面,这样它们就不会冻结整个应用程序。但还是很冷。调度程序似乎没有调用新线程

我正在使用以下代码:

this.Dispatcher.Invoke((Action)(() =>         // BeginInvoke also don't work
{
    Page1 p = new Page1();
    Frame1.NavigationService.RemoveBackEntry();
    Frame1.Content = p;
}));
还冻着呢!有什么帮助吗

非常感谢

我被迫使用调度程序在后台加载页面

这并不是强迫他们在后台线程上加载,而是强迫他们在调度程序的线程上加载

我被迫使用调度程序在后台加载页面


这并不是强迫他们在后台线程上加载,而是强迫他们在调度程序的线程上加载。

我调用调度程序是因为不可能让一个简单的线程在UI()上工作。那么,我如何才能使我的应用程序在这种情况下不冻结?@Guilherme如果你的应用程序冻结,那么你可能不仅仅是在更新UI。您应该将您的工作分为修改UI和不修改UI。在后台线程中执行不更新UI的工作(从数据库获取数据、读取/写入文件、在CPU上进行处理等)。然后,在完成所有这些之后,获取结果并用它们更新UI。所有基于用户界面的编程都应该这样做。@Servy是的,但这是一个空白页,没有内容,也没有代码。我不知道为什么它会冻结我的整个应用程序。嗯,没有办法将页面的加载过程与UI分开?@Guilherme没有一个神奇的按钮,你只需按下一次,就可以使所有UI代码在UI线程中运行,而所有非UI代码在后台线程中运行。您需要确定哪些代码在哪里运行,因为这不是一个可以自动化的问题。@Servy是的,我理解。我知道这不是小事,但没有代码可以放在后台。没有数据访问,没有加载页面。我没有代码落后,仍然冻结了很多。这个:“Frame1.Content=p;”需要大约1秒的时间来处理。我只想在后台使用这一行,我调用了一个调度程序,因为不可能让一个简单的线程在UI()上工作。那么,我如何才能使我的应用程序在这种情况下不冻结?@Guilherme如果你的应用程序冻结,那么你可能不仅仅是在更新UI。您应该将您的工作分为修改UI和不修改UI。在后台线程中执行不更新UI的工作(从数据库获取数据、读取/写入文件、在CPU上进行处理等)。然后,在完成所有这些之后,获取结果并用它们更新UI。所有基于用户界面的编程都应该这样做。@Servy是的,但这是一个空白页,没有内容,也没有代码。我不知道为什么它会冻结我的整个应用程序。嗯,没有办法将页面的加载过程与UI分开?@Guilherme没有一个神奇的按钮,你只需按下一次,就可以使所有UI代码在UI线程中运行,而所有非UI代码在后台线程中运行。您需要确定哪些代码在哪里运行,因为这不是一个可以自动化的问题。@Servy是的,我理解。我知道这不是小事,但没有代码可以放在后台。没有数据访问,没有加载页面。我没有代码落后,仍然冻结了很多。这个:“Frame1.Content=p;”需要大约1秒的时间来处理。我只想要这一行作为背景。