问题标签 [invoke]
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# - 跨线程操作无效:控件从创建它的线程以外的线程访问
我有一个场景。(Windows 窗体、C#、.NET)
- 有一个主窗体承载一些用户控件。
- 用户控件执行一些繁重的数据操作,因此如果我直接调用该
UserControl_Load
方法,UI 在加载方法执行期间将变得无响应。 - 为了克服这个问题,我在不同的线程上加载数据(尝试尽可能少地更改现有代码)
- 我使用了一个后台工作线程,它将加载数据,完成后将通知应用程序它已完成工作。
- 现在出现了一个真正的问题。所有 UI(主窗体及其子用户控件)都是在主主线程上创建的。在用户控件的 LOAD 方法中,我根据用户控件上的某些控件(如文本框)的值来获取数据。
伪代码如下所示:
代码 1
它给出的例外是
跨线程操作无效:控件从创建它的线程以外的线程访问。
要了解更多信息,我做了一些谷歌搜索,并提出了一个建议,例如使用以下代码
代码 2
但是但是但是……看来我又回到了原点。应用程序再次变得无响应。这似乎是由于第 1 行 if 条件的执行。加载任务再次由父线程完成,而不是我产生的第三个。
我不知道我认为这是对还是错。我是线程新手。
我该如何解决这个问题以及执行 Line#1 if block 的效果是什么?
情况是这样的:我想根据控件的值将数据加载到全局变量中。我不想从子线程更改控件的值。我永远不会从子线程中执行此操作。
所以只有访问该值,以便可以从数据库中获取相应的数据。
java - 将方法名称作为字符串给出时,如何调用 Java 方法?
如果我有两个变量:
在不知道 的类的情况下obj
,如何调用 on 标识的方法methodName
?
被调用的方法没有参数和String
返回值。它是 Java bean 的吸气剂。
.net - 如何使用反射在 .NET 中调用重载方法
有没有办法在.NET(2.0)中使用反射来调用重载方法。我有一个应用程序可以动态实例化从公共基类派生的类。出于兼容性目的,该基类包含 2 个同名方法,一个带参数,一个不带参数。我需要通过 Invoke 方法调用无参数方法。现在,我得到的只是一个错误,告诉我我正在尝试调用一个模棱两可的方法。
是的,我可以将对象转换为我的基类的实例并调用我需要的方法。最终这会发生,但现在,内部复杂性不允许它发生。
任何帮助都会很棒!谢谢。
c# - 需要帮助在 C# 中跨 UI 线程和另一个线程获取信息
我有一个服务器应用程序,它通过网络接收信息并对其进行处理。服务器是多线程的,一次处理多个套接字,线程是通过 BeginInvoke 和 EndInvoke 样式的方法在我的控制下创建的,这些方法由相应的回调函数链接。
除了主 GUI 之外,我正在尝试创建一个表单,该表单显示一个 ListBox 项目,该项目由描述当前连接的套接字的项目填充。所以,我基本上想要做的是使用它的 Add() 函数将一个项目添加到 ListBox 中,从线程中运行适当的回调函数。我正在通过 Controls 属性访问我的表单控件 - IE:
当然,我不只是调用该函数,我尝试了几种我在这里和网上找到的在线程之间进行通信的方法,包括MethodInvoker
使用 a delegate
、结合Invoke()
等BeginInvoke()
。似乎没有任何效果,我总是得到同样的异常告诉我我的控件是从创建它的线程以外的线程访问的。
有什么想法吗?
delegates - 通过委托执行可重写方法时,Invoke() 和 BeginInvoke() 的行为不同
谁能告诉我为什么这段代码的行为方式如此?查看代码中嵌入的注释...
我在这里错过了一些非常明显的东西吗?
c# - Invoke() 和 BeginInvoke() 有什么区别
BeginInvoke()
只是想知道和之间有什么区别Invoke()
?
主要是每个人的用途。
BeginInvoke()
编辑:创建线程对象和调用调用和调用委托之间有什么区别?还是它们是同一回事?
vb.net - 使用 VB.NET 通过字符串名称动态调用属性
我目前正在开发一个项目,其中一部分代码如下所示:
它会持续一段时间。代码显然很冗长,感觉可以改进。有没有办法在 VB.NET 中动态调用一个属性,这样就可以完成这样的事情:
c# - “System.InvalidOperationException:该对象当前正在其他地方使用” - 我该如何解决这个问题?
尝试更新图像时出现此错误。这是一个跨线程更新,但我使用了.Invoke(),所以应该不是问题。
c# - WPF Dispatcher.Invoke 'hanging'
我有一个有点复杂的 WPF 应用程序,当尝试使用调度程序调用 UI 线程上的调用时,它似乎“挂起”或陷入等待调用。
一般流程是:
- 处理按钮上的点击事件
- 创建一个新线程(STA):创建演示者和 UI 的新实例,然后调用方法Disconnect
- 然后断开连接在 UI 上设置一个名为Name的属性
- 然后 Name 的设置器使用以下代码设置属性:
我的问题是,当调用调度程序调用方法时,它似乎每次都挂起,并且调用堆栈表明它处于睡眠状态,等待或加入 Invoke 实现。
那么,是否有什么我做错了,我错过了,明显与否,或者是否有更好的方法来调用 UI 线程来设置这个属性(和其他属性)?
编辑:解决方案是在线程委托结束时调用 System.Windows.Threading.Dispatcher.Run() (例如,正在执行工作的位置) - 感谢所有帮助的人。
java - 是否有用于 Java 反射的通用“后端”库
我目前正在使用一种用 Java 实现的专门的、解释性的编程语言。作为该语言的一小部分,我想添加调用 Java 的功能。在深入探讨反射的所有细节之前,我想知道是否有人知道一个通用库,用于执行反射调用 Java 代码的“后端”部分。
也就是说,我将一个字符串(我定义了语法)解析为一些表示 Java 方法调用(或构造函数,或字段访问)的数据结构,然后将该数据结构传递给调用该调用并返回结果的库。特别是,我希望它已经处理了我不想弄清楚的所有边缘情况:
- 根据参数类型自动选择正确的方法(如智能 Class.getDeclaredMethod())
- 处理数组和普通对象引用之间的区别
- ETC
我花了一点时间研究 JVM 上的动态语言的实现,但这些通常比我正在寻找的要复杂得多,或者针对特定语言进行了高度优化。
另一种选择是将我的语法转换为某种动态语言的字符串并用 Rhino 或其他东西调用它,但这比我正在寻找的开销要多一些。