草庐IT

dispatcher

全部标签

c# - 检测是否在 WPF 和 Winforms 的 UI 线程上

我在下面编写了一个断言方法Ensure.CurrentlyOnUiThread(),用于检查当前线程是否为UI线程。这在检测WinformsUI线程时是否可靠?我们的应用混合了WPF和Winforms,如何最好地检测有效的WPFUI线程?有更好的方法吗?也许代码契约(Contract)?Ensure.csusingSystem.Diagnostics;usingSystem.Windows.Forms;publicstaticclassEnsure{[Conditional("DEBUG")]publicstaticvoidCurrentlyOnUiThread(){if(!Appli

c# - 检测是否在 WPF 和 Winforms 的 UI 线程上

我在下面编写了一个断言方法Ensure.CurrentlyOnUiThread(),用于检查当前线程是否为UI线程。这在检测WinformsUI线程时是否可靠?我们的应用混合了WPF和Winforms,如何最好地检测有效的WPFUI线程?有更好的方法吗?也许代码契约(Contract)?Ensure.csusingSystem.Diagnostics;usingSystem.Windows.Forms;publicstaticclassEnsure{[Conditional("DEBUG")]publicstaticvoidCurrentlyOnUiThread(){if(!Appli

c# - WPF Dispatcher 的 InvokeAsync 和 BeginInvoke 有什么区别

我注意到在.NET4.5中WPFDispatcher已经获得了一组新方法来在名为InvokeAsync的Dispatcher线程上执行内容.之前,.NET4.5我们有Invoke和BeginInvoke分别以同步和异步方式处理。除了命名和可用的重载略有不同之外,BeginInvoke和InvokeAsync方法之间是否存在任何重大差异?哦,我已经检查过了,两者都可以awaited:privateasyncTaskRunStuffOnUiThread(Actionaction){//bothoftheseworksfineawaitdispatcher.BeginInvoke(actio

c# - WPF Dispatcher 的 InvokeAsync 和 BeginInvoke 有什么区别

我注意到在.NET4.5中WPFDispatcher已经获得了一组新方法来在名为InvokeAsync的Dispatcher线程上执行内容.之前,.NET4.5我们有Invoke和BeginInvoke分别以同步和异步方式处理。除了命名和可用的重载略有不同之外,BeginInvoke和InvokeAsync方法之间是否存在任何重大差异?哦,我已经检查过了,两者都可以awaited:privateasyncTaskRunStuffOnUiThread(Actionaction){//bothoftheseworksfineawaitdispatcher.BeginInvoke(actio

c# - 使用 Dispatcher.Invoke 从非主线程更改 WPF 控件

我最近开始使用WPF编程并遇到了以下问题。我不明白如何使用Dispatcher.Invoke()方法。我在线程方面有经验,我制作了一些简单的Windows窗体程序,我只是在其中使用了Control.CheckForIllegalCrossThreadCalls=false;是的,我知道这很蹩脚,但这些都是简单的监控应用程序。事实是现在我正在制作一个在后台检索数据的WPF应用程序,我启动一个新线程来调用检索数据(从网络服务器),现在我想在我的WPF表单上显示它.问题是,我无法从此线程设置任何控件。甚至没有标签或任何东西。如何解决?回复评论:@Jalfp:所以当我获取数据时,我在“新模式”

c# - 使用 Dispatcher.Invoke 从非主线程更改 WPF 控件

我最近开始使用WPF编程并遇到了以下问题。我不明白如何使用Dispatcher.Invoke()方法。我在线程方面有经验,我制作了一些简单的Windows窗体程序,我只是在其中使用了Control.CheckForIllegalCrossThreadCalls=false;是的,我知道这很蹩脚,但这些都是简单的监控应用程序。事实是现在我正在制作一个在后台检索数据的WPF应用程序,我启动一个新线程来调用检索数据(从网络服务器),现在我想在我的WPF表单上显示它.问题是,我无法从此线程设置任何控件。甚至没有标签或任何东西。如何解决?回复评论:@Jalfp:所以当我获取数据时,我在“新模式”

c# - 处置 WPF 用户控件

我创建了一个自定义WPF用户控件,旨在供第三方使用。我的控件有一个私有(private)成员,它是一次性的,我想确保一旦包含的窗口/应用程序关闭,它的dispose方法将始终被调用。但是,UserControl不是一次性的。我尝试实现IDisposable接口(interface)并订阅Unloaded事件,但在主机应用程序关闭时都没有被调用。MSDN表示可能根本不会引发Unloaded事件。并且它也可能不止一次被触发,即当用户改变主题时。如果可能的话,我不想依赖我的控件的使用者记住调用特定的Dispose方法。publicpartialclassMyWpfControl:UserCo

c# - 处置 WPF 用户控件

我创建了一个自定义WPF用户控件,旨在供第三方使用。我的控件有一个私有(private)成员,它是一次性的,我想确保一旦包含的窗口/应用程序关闭,它的dispose方法将始终被调用。但是,UserControl不是一次性的。我尝试实现IDisposable接口(interface)并订阅Unloaded事件,但在主机应用程序关闭时都没有被调用。MSDN表示可能根本不会引发Unloaded事件。并且它也可能不止一次被触发,即当用户改变主题时。如果可能的话,我不想依赖我的控件的使用者记住调用特定的Dispose方法。publicpartialclassMyWpfControl:UserCo

javascript - Vuex 2.0 Dispatch 与 Commit

有人可以解释一下什么时候使用调度和提交吗?我了解提交会触发突变,而派发会触发操作。但是,调度不也是一种Action吗? 最佳答案 正如您所说的那样,$dispatch触发一个Action,而commit触发一个突变。以下是如何使用这些概念:您始终在路由/组件的方法中使用$dispatch。$dispatch向您的vuex存储发送消息以执行某些操作。该操作可以在当前报价之后的任何时间完成,这样您的前端性能就不会受到影响。您永远不会从您的任何组件/路由提交。它仅在一个操作中完成,并且仅当您有一些数据要提交时。原因:提交是同步的,在完成之

javascript - Vuex 2.0 Dispatch 与 Commit

有人可以解释一下什么时候使用调度和提交吗?我了解提交会触发突变,而派发会触发操作。但是,调度不也是一种Action吗? 最佳答案 正如您所说的那样,$dispatch触发一个Action,而commit触发一个突变。以下是如何使用这些概念:您始终在路由/组件的方法中使用$dispatch。$dispatch向您的vuex存储发送消息以执行某些操作。该操作可以在当前报价之后的任何时间完成,这样您的前端性能就不会受到影响。您永远不会从您的任何组件/路由提交。它仅在一个操作中完成,并且仅当您有一些数据要提交时。原因:提交是同步的,在完成之