这是关于编程技术的问题。这个想法是这样的:
control A
触发事件(正常)control A
侦听事件(其他线程/控件)我想实施第二个。但是以安全且最模块化的方式。所以控件必须不知道是谁发射了事件只是它被触发。我认为有很多方法可以做到这一点。哪一个是最好的 ?假设某个表单正在触发事件LoadImages
,并希望收听事件ImagesLoaded
。
control A
的函数并以这种方式通知它们已完成(但他们知道control A
及其方法) control A
订阅线程/控件的事件并知道它们被解雇的时间(知道所有内容的主线程必须通过事件订阅连接它们) control A
启动一个调用阻塞函数的等待线程,并在函数完成时触发ImagesLoaded
事件(control A
知道线程/控件是做什么的一些工作) control A
调用函数或触发事件,同时将callback
函数作为参数传递(除了他们必须做的事情,没有人知道任何事情) 哪一个给了我最大的模块性?还有更多方法可以实现2吗?
答案 0 :(得分:0)
您提到的技术通常通过异步调用和异步调用完成时执行的* callback *来实现。话虽如此,似乎BackgroundWorker符合你的情况。您可以使用其DoWork
处理程序执行阻塞/长时间运行的作业,并绑定在RunWorkerCompleted
事件结束时要执行的操作(尤其是更新UI)。