Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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# 在WPF中更新GUI的方法_C#_Wpf_Backgroundworker_Dispatcher - Fatal编程技术网

C# 在WPF中更新GUI的方法

C# 在WPF中更新GUI的方法,c#,wpf,backgroundworker,dispatcher,C#,Wpf,Backgroundworker,Dispatcher,我想问一下,哪种更新GUI的方法更适合我的场景。 我想根据用户触摸的输入点到点操作(移动)多个控件 我知道一些不同的方法。 调度器定时器&定时器。(他们之间有什么区别?) 背景工作者。 故事板和起始动画方法 从节省内存和资源以及更易于编码的角度来看,通常建议使用以下哪种方法 谢谢大家! 我认为这三个问题有助于你理解所有的差异: 除了Vijay给出的链接外,在WPF应用程序中操纵视觉效果时,一个非常重要的常见概念是 简言之,Dispatcher是UI的消息队列网关管理器,它接收委托并对其进行优

我想问一下,哪种更新GUI的方法更适合我的场景。 我想根据用户触摸的输入点到点操作(移动)多个控件

我知道一些不同的方法。 调度器定时器&定时器。(他们之间有什么区别?) 背景工作者。 故事板和起始动画方法

从节省内存和资源以及更易于编码的角度来看,通常建议使用以下哪种方法


谢谢大家!

我认为这三个问题有助于你理解所有的差异:


除了Vijay给出的链接外,在WPF应用程序中操纵视觉效果时,一个非常重要的常见概念是

简言之,Dispatcher是UI的消息队列网关管理器,它接收委托并对其进行优先级排序,以便在给定线程上执行。在WPF中,UI线程是STA。此外,在UI线程上创建的任何可视化都具有线程关联性,这意味着如果您正在执行任何多线程功能(为了更快的性能),那么在操作这些可视化时,例如更新它们的值、增大/减小它们的大小、聚焦它们、转换它们等,必须使用UI Dispatcher完成

现在回到您的情况,当您想要移动物品时,这是一个不错的选择


希望这能帮你找到正确的方向。

谢谢!我当然理解得更多,但是我仍然不清楚backgroundworker的概念。它是否会被多次调用,就像dispathertimer在某个时间间隔调用一个方法一样?谢谢。:)不,只有一次。Backgroundworker有一个DoWork()eventhandler,它一旦连接,就只能在程序员希望通过调用Backgroundworker.RunWorkerAsync()显式执行时执行。