替换INVOKE的方法

时间:2013-04-14 15:52:28

标签: vb.net invoke invokerequired

对于在其他线程中创建的对象,有没有办法使用InvokeInvokeRequired方法?有没有一种更直接,内存更少的方法?也许状态机或线程控制?

我是否在浪费时间担心此方法的资源使用情况?

我正在使用此调用方法:http://tech.xster.net/tips/invoke-ui-changes-across-threads-on-vb-net/

我在VS 2012中使用VB.NET

1 个答案:

答案 0 :(得分:1)

这非常符合我医生的通常建议:“如果疼,那就不要这样做了。”

有几种.NET模式强调将线程代码与需要在UI上运行的代码分开。 BackgroundWorker已经存在很长时间了,请注意其ProgressChanged和RunWorkerCompleted事件如何在UI线程上运行。无需自行调用即可更新UI的好地方。

.NET 4 Task类向您提供TaskScheduler.FromCurrentSynchronizationContext()方法。这是链接在UI线程上运行的任务的好方法,非常专门用于使用异步运行的先前任务的结果更新UI。 VS2012提供了另一种使用Async和Await关键字的武器。避免编写您不想写的代码的所有好方法。