0

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

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

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

我在 VS 2012 中使用 VB.NET

4

1 回答 1

1

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

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

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

于 2013-04-14T17:32:18.177 回答