206得票9回答
自动化InvokeRequired代码模式

我痛感到在事件驱动的GUI代码中,我们经常需要编写以下代码模式:private void DoGUISwitch() { // cruisin for a bruisin' through exception city object1.Visible = true; o...

49得票8回答
清理带有InvokeRequired的代码垃圾

我知道当从任何非UI线程操纵UI控件时,必须将调用调度到UI线程以避免问题。一般的共识是应该使用测试InvokeRequired,并且如果为true,则使用.Invoke来执行调度。 这导致了很多看起来像这样的代码:private void UpdateSummary(string text...

40得票6回答
不管InvokeRequired是否为真,调用Invoke有什么问题?

我看到了常见的用于跨线程访问GUI控件的设置,例如在这里讨论的那样: 编写窗体控件的线程安全访问方法的最短方式 我发现所有的网络搜索结果都描述了类似的事情。 然而,为什么我们需要检查InvokeRequired? 我们不能直接调用Invoke吗? 我假设答案是否定的,所以我的真正问题是'...

35得票4回答
WPF中的InvokeRequired

我在一个Windows Forms应用程序中使用了这个函数:delegate void ParametrizedMethodInvoker5(int arg); private void log_left_accs(int arg) { if (InvokeRequired) ...

21得票2回答
盲目使用InvokeRequired是不好的做法吗?

我是一名新手程序员,所以我可能完全错了,但这个问题困扰着我。 实际上,这是对这个问题的跟进。 被接受的答案是,你必须调用InvokeRequired来避免一些开销,因为有可能你已经在UI线程上操作。 从理论上讲,我同意这可以节省一些时间。经过一些测试,我发现使用Invoke大约要比正常调...

13得票5回答
在没有控制对象的情况下在UI线程上运行代码

我目前正在编写一个组件,其中一些部分应该在UI线程上运行(解释会很长)。 最简单的方法是将控件传递给它,并在其上使用InvokeRequired/Invoke。 但我认为将控件引用传递给“数据/后台”组件不是一个好的设计,因此我正在寻找一种在无需控件的情况下在UI线程上运行代码的方法。 类似W...

9得票3回答
InvokeRequired and ToolStripStatusLabel

在我的应用程序中,我有一个负责所有数据库操作的类。它被从主类调用,并使用委托在操作完成后调用方法。 由于它是异步的,所以我必须在我的 GUI 上使用 invoke 方法,因此我创建了一个简单的扩展方法: public static void InvokeIfRequired<T&gt...

7得票3回答
窗体的InvokeRequired == false而包含的控件的InvokeRequired == true

怎么可能呢?我有一个基于System.Windows.Forms.Form派生的Windows窗体控件,其中包含WebBrowser控件。Webbrowser对象实例在窗体的构造函数中创建(在InitializeComponent()方法中)。然后,在后台线程中操作WebBrowser的内容,...

7得票4回答
在UI线程中从异步组件触发事件

我正在使用.Net 2.0构建一个非可视组件。该组件使用异步套接字(BeginReceive、EndReceive等)。异步回调在由运行时创建的工作线程上下文中被调用。组件用户不必担心多线程(这是主要目标,我想要的)。 组件用户可以在任何线程中创建我的非可视组件(UI线程只是简单应用程序的常...

7得票5回答
如何在扩展/方法文件中使用Invoke方法?

嗯,我正在编写一个有关字符串、标签、链接标签、类等的扩展/方法文件。 但是,我遇到了一个问题。我有一个showMessage()方法,它可以更改标签的文本,运行正常。但是我决定让它在线程执行中工作,于是我这样做: namespace LabelExtensions { public...