问题标签 [invokerequired]
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.
c# - 为什么我的文本框不通过使用 InvokeRequired 的线程安全调用进行更新?
更新日期1:
更多详细信息:线程 1 和 2 必须持续处于活动状态。线程 1 正在更新其 GUI 并执行 HTTP POST。线程 2 将 HTTPListener 用于传入的 HTTP POST,并将该数据提供给线程 1。因此,GUI 需要显示当前的文本框值,并在线程 2 提供数据时更新。Servy 或其他方法是否允许两个线程同时工作?看来主线程正在等待线程 2 完成它的工作。然后它接受 prepWork 并使用它。我在 Servy 的示例中进行了编码,但找不到带有 Task 类的 Run() 定义。它的图书馆没有这种方法。我在 VS 2010 上使用 Net 4.0。有没有等效的方法可以使用?Start() 也没有编译,我知道你只能运行一次任务。
原始问题:
我已经测试了可以成功启动我的事件并在事件处理程序中更新我的 GUI 文本框的代码,如果事件在我理解的 UI 线程 1 中启动。当我尝试调用线程 1 方法 Fire() 从我的独立线程 2 方法 PrepareDisplay(), Fire() 被调用并依次触发事件。我输入了一些线程安全的调用代码(模仿 MSDN 教程中的 WinForms 线程安全),但事件处理程序仍然没有更新文本框。单步执行代码时,似乎 InvokeRequired 为 false。我的最终目标是将数据从线程 2 传递到 UI 线程 1,并使用新数据更新文本框。我不明白为什么线程安全代码没有启用它。有人可以帮助我更好地理解这一点,以及我忽略了什么吗?下面是代码:
非常感谢,
c# - 多次调用和线程安全
让我们假设我有工作线程来增加某个控件的值。由于需要调用,所有增量都需要在 GUI 线程上完成。为此,我使用 BeginInvoke。
我的问题是:
竞争条件能否破坏控件的增量,因为多个工作线程都在 GUI 线程上同时调用(并且增量本身someControl.Value += value;
显然不是原子的)?
或者反过来说:
一个 Invoke 是否保证在另一个 Invoke 被处理之前完成?
谢谢!
vb.net - 列表框问题上的线程安全调用
第一次在这里发帖。虽然潜伏了很长时间。我会马上解决的。
我的小项目是一个应用程序,它可以从 craigslist 中删除帖子。抓取后,列表数据将发送到“Form1”中的列表框。我创建了一个工人阶级来处理所有的抓取。当我的类函数“guiAdd()”无法正确填充列表框时,就会出现问题。
鉴于 Form1 确实存在,并且它确实有一个名为“lvsearch”的列表框控件:
这就是我认为问题所在: 类子例程
这是完整的课程:
这是类被实例化的方式:
所以,这就是我所拥有的一切。我意识到解析代码需要修改/完成。我会解决的。这是在概念验证阶段。正确的数据类型被传递。我只需要一些帮助来理解为什么 addGUI() 不能正常工作。我对多线程的世界并不是特别精通,所以我很高兴我能做到这一点。
我一直以此为指导: http ://www.vbforums.com/showthread.php?682082-Understanding-Multi-Threading-in-VB-Net
c# - 读取但不更新 DataGridView 控件时 .NET 中的 GUI 跨线程安全
虽然关于使用 Control.Invoke 从工作线程更新 GUI 控件的问题/答案有很多,但我无法清楚地了解从控件读取数据而不更新它的主题。
示例:我在 Windows 窗体上有一个 DataGridView。从工作线程中,我想检查 DGV 上特定单元格的值,但我不需要/不想更新该值。从工作线程中,我调用一个方法,该方法将 DataGridView 对象作为其唯一参数,然后该方法检查 DataGridView 中的特定单元格但不修改它,在这种情况下我需要使用 .Invoke 吗?
现在,如果不使用 .Invoke,代码似乎运行良好,没有明显的警告。但是,我不清楚这是否安全,因为它不会更新 DGV,而是只查看 DGV 的单元而不修改任何单元。
有人可以对此有所了解吗?如果这是一个重复的问题,我很抱歉,但我找不到任何其他问题,这些问题专注于在多线程情况下只阅读控件而不更新/修改它。
谢谢。
从工作线程调用的示例方法:
c# - 从后台工作人员更新标签数组
我正在尝试更新后台工作人员表单上的一组标签。这是我的代码:
这不起作用,但如果我尝试更改每个标签的文本属性而不是数组,它会起作用。我怎样才能解决这个问题?还有比我为表单上的每个控件所做的更新来自后台工作人员的表单控件的更短/更好的方法吗?
编辑:这是我定义数组的方式:
这是我调用来分配数组的函数:
c# - C# wpf 调度程序混淆
我应该如何将此代码移植到 wpf?
vb.net - 当执行到达 Me.Invoke 时,它挂起
我已将代码简化为单一形式,如下所示:
在Me.Invoke(sub() ...
执行 Sub Test 时,它会挂起。没有错误被抛出,并且没有在事件查看器中写入任何内容。
即使我按 F11,Debug Into,它也会挂起。
有任何想法吗?
谢谢
J.P
java - 尝试设置 tomcat 以使用 servlet
我正在遵循 Java All in one for Dummies 3rd edition 中的说明
我下载了 tomcat 并按照步骤 6 进行了设置。“修改 web.xml 文件以启用调用者 servlet” 它说要找到调用者的代码行,然后对它们进行注释。我目前在 web.xml 文件中并搜索了调用,但什么也没出现……我应该自己编写调用程序吗?或者评论不同的行?(这本书已有 4 年历史,可能已经过时)或者根本没有改变任何东西?
c# - Winform check Invokerequired for each tabpages in a tabcontrol
我有一个winform应用程序,主窗体有一个tabcontrol,一个线程会非常频繁地创建或删除标签页。而其他一些后台线程会获取数据并需要访问其中的每个标签页的控件。代码在这里并且可以工作:
问题是,我意识到实际上后台线程需要访问某个标签页,而不是标签控件,是InvokeRequired
检查标签控件的属性,还是我需要检查每个标签页的属性InvokeRequired
?因为有时我觉得 UI 会在短时间内阻塞。
是不是说当tabcontrol可以访问UI线程时,不等于里面的所有tabpage都可以做到这一点?或者可以优化什么?