1

这是一个关于编程技术的问题。这个想法是这样的:

  1. control A触发事件(正常)
  2. control A监听事件(其他线程/控件的)

我想实施第二个。但是以一种安全且最模块化的方式。所以控件必须不知道谁在触发事件,只有它被触发了。我认为有很多方法可以做到这一点。哪一个是最好的 ?假设一个表单正在触发事件LoadImages并想要监听事件ImagesLoaded

  • 线程/控件调用一个函数control A并以这种方式通知它它们已经完成(但它们知道control A它的方法)
  • control A订阅线程/控件的事件并知道它们何时被触发(知道一切的主线程必须通过事件订阅连接它们)
  • control A启动一个调用阻塞函数的等待线程,并ImagesLoaded在函数完成时触发事件control A了解执行某些工作的线程/控件)
  • control Acallback在将函数作为参数传递时调用函数或触发事件(除了他们必须做什么之外,没有人知道任何事情)
  • ... ?

哪一个给了我最大的模块化?还有更多的方法来实现 2 吗?

4

1 回答 1

0

您提到的技术通常是通过异步调用和异步调用完成时执行的 *callback*s 来实现的。话虽如此, BackgroundWorker似乎适合您的情况。您可以使用其DoWork处理程序执行阻塞/长时间运行的作业,并将完成后要执行的操作绑定到RunWorkerCompleted事件(尤其是更新 UI)。

于 2013-07-16T06:21:20.910 回答