草庐IT

dispatcher

全部标签

c# - 在 WPF 应用程序中使用 C# 调度程序

我正在构建一个聊天客户端,但不是100%确定如何使用dispatcher。所以问题是我有这样的方法:publicvoidLostConnection(){myGUI.chatBox.AppendText("Lostconnectiontoroom:"+myGUI.UsernameText.ToString()+"\r\n");}我是否需要用Dispatcher.Invoke包围(myGUI.chatBox...)中的语句?感谢您的帮助。 最佳答案 您的应用有一个主UI线程(通常是ManagedThreadId==1)。通常在聊天应用

c# - WPF 中的调度程序与线程的关系

我并不完全清楚一个应用程序中有多少Dispatcher,以及它们如何与Threads相关或从Threads引用。据我了解,一个WPF应用程序有2个线程(一个用于输入,另一个用于UI)和1个调度程序(与UI线程关联)。如果我创建另一个线程-让我们称之为“工作线程”-当我在工作线程上调用Dispatcher.CurrentDispatcher时,我会得到哪个调度程序?另一种情况:假设一个控制台应用程序有2个线程——主线程和输入线程。在主线程上,我首先创建输入线程,然后调用Application.Run()Threadthread=newThread(newThreadStart(UserI

c# - WPF 中的调度程序与线程的关系

我并不完全清楚一个应用程序中有多少Dispatcher,以及它们如何与Threads相关或从Threads引用。据我了解,一个WPF应用程序有2个线程(一个用于输入,另一个用于UI)和1个调度程序(与UI线程关联)。如果我创建另一个线程-让我们称之为“工作线程”-当我在工作线程上调用Dispatcher.CurrentDispatcher时,我会得到哪个调度程序?另一种情况:假设一个控制台应用程序有2个线程——主线程和输入线程。在主线程上,我首先创建输入线程,然后调用Application.Run()Threadthread=newThread(newThreadStart(UserI

c# - 错误 : Must create DependencySource on same Thread as the DependencyObject even by using Dispatcher

以下是我的View的一部分,我在其中将一个图像绑定(bind)到我的ViewModel中的一个属性:我的ViewModel是这样的:publicclassMainWindowViewModel:INotifyPropertyChanged{publicBitmapImageImage{get{return_image;}set{_image=value;OnPropertyChanged();}}Action_makeScannerAlwaysOnAction;privateBitmapImage_image;publicMainWindowViewModel(){AddNewPers

c# - 错误 : Must create DependencySource on same Thread as the DependencyObject even by using Dispatcher

以下是我的View的一部分,我在其中将一个图像绑定(bind)到我的ViewModel中的一个属性:我的ViewModel是这样的:publicclassMainWindowViewModel:INotifyPropertyChanged{publicBitmapImageImage{get{return_image;}set{_image=value;OnPropertyChanged();}}Action_makeScannerAlwaysOnAction;privateBitmapImage_image;publicMainWindowViewModel(){AddNewPers

WPF跨线程访问UI对象之Dispatcher的用法(含Task)

WPF程序员处理多线程的一个方式-Dispatcher当我们打开一个WPF应用程序即开启了一个进程,该进程中至少包含两个线程。一个线程用于处理呈现:隐藏在后台运行一个线程用于管理用户界面:接收输入、处理事件、绘制屏幕以及运行应用程序代码。即UI线程。在UI线程中有一个Dispatcher对象,管理每一个需要执行的工作项。Dispatcher会根据每个工作项的优先级排队。向Dispatcher列队中添加工作项时可指定10个不同的级别。那么问题来了,如果遇到耗时操作的时候,该操作如果依旧发生在UI线程中,Dispatcher列队中其他的需要执行的工作项都要等待,从而造成界面假死的现象。为了加快响应

c# - C# 是单分派(dispatch)语言还是多分派(dispatch)语言?

我正在尝试准确地理解什么是单次分派(dispatch)和多次分派(dispatch)。我刚刚读到这个:http://en.wikipedia.org/wiki/Multiple_dispatch根据该定义,在我看来C#和VB.Net是多重调度的,即使选择调用哪个重载是在编译时进行的。我在这里是正确的,还是我遗漏了什么?谢谢! 最佳答案 好的,我理解了函数重载与多重调度的细微差别。基本上,区别在于调用哪个方法是在运行时还是编译时选择的。现在,我知道每个人都这么说,但没有一个明确的例子,这听起来很明显,因为C#是静态类型的,而多调度语言

c# - C# 是单分派(dispatch)语言还是多分派(dispatch)语言?

我正在尝试准确地理解什么是单次分派(dispatch)和多次分派(dispatch)。我刚刚读到这个:http://en.wikipedia.org/wiki/Multiple_dispatch根据该定义,在我看来C#和VB.Net是多重调度的,即使选择调用哪个重载是在编译时进行的。我在这里是正确的,还是我遗漏了什么?谢谢! 最佳答案 好的,我理解了函数重载与多重调度的细微差别。基本上,区别在于调用哪个方法是在运行时还是编译时选择的。现在,我知道每个人都这么说,但没有一个明确的例子,这听起来很明显,因为C#是静态类型的,而多调度语言

c# - 从另一个线程更新 ObservableCollection 的最佳方法是什么?

我正在使用BackgroundWorker更新ObservableCollection但它给出了这个错误:"ThistypeofCollectionViewdoesnotsupportchangestoitsSourceCollectionfromathreaddifferentfromtheDispatcherthread."用最少的工作量解决这个问题的最佳和最优雅的方法是什么。我不想编写低级的基于锁的多线程代码。我在网上看到过一些解决方案,但都是几年前的了,所以不确定这个问题的解决方案的最新共识是什么。 最佳答案 如果您在构造函

c# - 从另一个线程更新 ObservableCollection 的最佳方法是什么?

我正在使用BackgroundWorker更新ObservableCollection但它给出了这个错误:"ThistypeofCollectionViewdoesnotsupportchangestoitsSourceCollectionfromathreaddifferentfromtheDispatcherthread."用最少的工作量解决这个问题的最佳和最优雅的方法是什么。我不想编写低级的基于锁的多线程代码。我在网上看到过一些解决方案,但都是几年前的了,所以不确定这个问题的解决方案的最新共识是什么。 最佳答案 如果您在构造函