问题标签 [begininvoke]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - 单声道挂起而 MS.Net 没有的线程问题
我正在使用单声道测试我的应用程序以预置 Linux 端口,但我遇到了线程问题。我最初考虑在这里粘贴 3000 行代码,但最后我设计了一个小的最小示例;)
您有一个带有按钮的表单(诗意地命名为Button1
,和一个标签(毫无疑问,它带有名称Label1
))。整个过程就是在一种叫做Form1
. 单击Button1
会启动一个无限循环,该循环会增加本地计数器并更新Label1
(使用Invoke
)以反映其值。
现在在 Mono 中,如果您调整表单大小,标签将停止更新,永远不会重新启动。MS 实现不会发生这种情况。BeginInvoke
没有更好的工作;更糟糕的是,它会使 UI 在这两种情况下都挂起。
你知道这种差异是从哪里来的吗?你会怎么解决?最后,为什么 BeginInvoke 在这里不起作用?我一定是犯了一个大错……但是哪个?
编辑:到目前为止的一些进展:
- 调用 BeginInvoke 确实有效;只是,用户界面的刷新速度不够快,所以它似乎停止了。
- 在单声道上,当您在 UI 队列中插入消息(例如,通过调整表单大小)时,整个线程会挂起。事实上,同步
Invoke
调用永远不会返回。我试图理解为什么。 - 有趣的是:即使使用
BeginInvoke
,在调整大小操作结束之前也不会执行异步调用。在 MS.Net 上,它们在调整大小的同时继续运行。
代码如下所示(C# 版本较低):
或者,在 C# 中,
c# - 为什么选择异步回调?
我已经读到该AsyncCallback
函数将在委托调用完成后执行所有后处理任务。我的问题是在 after/below 之后编写后处理任务有什么区别EndInvoke
,因为EndInvoke
将等到委托调用返回。
wpf - 对 Dispatcher.BeginInvoke() 的行为感到困惑
有人可以阐明我遇到的问题吗?
我正在做一个 wpf 项目。场景如下:
我需要在主 UI 线程上弹出一个窗口(模型窗口)然后关闭它。这些工作从另一个 UI 线程开始(以阻止用户单击主 UI 窗口。)然后我关闭此窗口。主要代码如下所示。它有效。
据我所知,close 方法在返回之前不会被执行ShowDialog()
(至少在 UI 线程上是这种情况,我的意思是没有调度程序的代码),有人有多线程经验吗?
感谢您的时间!
c# - 如何对操作进行单元测试 BeginInvoke
我正在寻找一种在 Action 方法上测试 BeginInvoke 的方法,因为该方法在后台线程上运行,因此无法知道它何时实际完成或调用回调方法。我正在寻找一种方法让我的测试等到回调被调用后再进行断言。
在下面的 Presenter 类中,您可以注意到我在后台线程上调用 PopulateView,它会在获取数据时更新视图,并且我正在尝试断言视图属性已正确初始化。
我正在使用 NUnit 和起订量。
c# - Backgroundworker/Control.BeginInvoke() 冻结 UI
我有一些代码可以执行 Windows svc(另一个进程)并同时更新 UI。调用使用BeginInvoke
,如下所示:
这是在DoWork
事件处理程序中。但是,用户界面仍然冻结。我需要打电话到Application.DoEvents
某个地方吗(如果需要,在哪里?)?我怎样才能消除冻结?
在按钮单击中,我有:
InstallBackgroundWorker
只需运行更新 UI 等的代码。
我想要做的是调用 WCF 服务器(托管在 Windows 服务中 - 这很好),但是当它关闭时,以异步方式更新进度条和带有任意值的标签。当我选择一个树节点时,所选树节点的事件处理程序被触发,这可能会导致一些减速。我会尝试把它放在它自己的后台工作人员中。
c# - C# - 如何从 InvokeRequired 模式获取同步 UI 更新?
我有许多线程可以将文本附加到富文本框中。使用 Invoke(),我很容易在主 UI 线程和工作线程之间出现死锁。使用 BeginInvoke(),我得到了我不想要的异步 UI 更新。我希望文本立即出现在文本框中,而不是在我无法确定的某个后期阶段。
我该如何完成我的任务?
谢谢!
c# - 如何在 C# 的“BeginInvoke”委托函数中设置变量的值?
我在不同的线程上有这个代码:
我想要的是获取“ LISTVIEW.Items[x].Text.Trim();
”的值并将其传递给“sub”。请注意,LISTVIEW 控件位于主线程上。现在我怎么能做到这一点?
winforms - C# Winforms:BeginInvoke 仍在同一线程上运行?
我是网络开发人员,我正在尝试进入多线程编程。在一种形式上,我尝试使用异步委托在第二个线程中运行计算值的方法。我还希望通知显示 UI 线程中实际进度的进度条。
当我运行它时,一切都在计算没有任何问题,除了它仍在 UI 线程中运行(我想是这样,因为当我单击表单上的某个按钮时它会冻结)。
为什么?我还附加了具有相同代码的可构建示例项目(VS2010):http: //osmera.com/windowsformsapplication1.zip
感谢帮助新手。
wpf - where does Dispatcher.BeginInvoke put items to? the new pushed frame by pushframe?
I'm working with Dispatcher in wpf, and I'm looking at the following page: http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.pushframe.aspx
there is an example which achieves similar result as the DoEvent method, it first call begininvoke to put an item on the event queue, then pushframe. I'm wondering which frame was put on? the original one or the newly pushed one?
Could anybody shed some light on this? Thank you.
c# - 后台工作者和图表更新
我正在使用后台工作人员从设备读取数据值并显示在图表中。我使用 BeginInvoke 并更新图表中的值。问题是图表中的值至少有 2-3 秒的延迟更新,而且不是实时的。图表中的更新速度也有所不同,在某一时刻,图表会使用所有先前的值进行更新。
我如何使它成为实时的?非常感谢任何帮助。